Qt 系列(六)——表单

前言

出个差出的状态都没了,每次回来都得缓个一段时间,这篇主要聊下qt中表单控件的常规使用,也是个基础的玩意儿。

表单控件

常规使用的表单控件如:单行文本,多行文本,单选,多选,下拉,日期、时间选择等,在qt中对应的就是QLineEdit,QTextEdit,QRadioButton,QCheckBox,QComboBox,QDateEdit/QDateTimeEdit之类。

像下图这样搞一个demo界面,然后我们来看这一个个控件。

QLineEdit

单行文本,可以通过setText() 来设置文本内容(insert() 也可以不过没有特殊需求就不常用),text() 来获取文本内容,setPlaceholderText() 设置提示文本内容。

输入框一般对应的事件常用的就是textChanged()

echoMode可以设置显示模式,根据需要来设置。

显示作用
Normal普通文本,可正常显示输入内容
NoEcho不显示输入内容,类似linux下输入密码
Password密码文本,隐藏输入内容,用圆点代替
PasswordEchoOnEdit也是密码文本,在输入时/聚焦时显示内容,失去焦点后显示为密码文本

setValidator() 用来设置输入限制,例如只能输整数/小数或者其他限制之类的,常用的验证器像内置的QIntValidator,QDoubleValidator,需要自定义的就可以用QRegExpValidator这个正则限制,通过自定义正则表达式来限制输入。

1
2
3
4
5
6
7
8
9
// 整数 [0~5]
QValidator* validator1 = new QIntValidator(0, 5, this);
// 小数 [0~300] 一位小数
QDoubleValidator* validator4 = new QDoubleValidator(0, 300, 1, this);
validator4->setNotation(QDoubleValidator::StandardNotation);
// 字符+数字
QRegExp reg("[a-zA-Z0-9]+$");
QRegExpValidator* pValidator = new QRegExpValidator(this);
pValidator->setRegExp(reg);

QTextEdit

多行文本,与QLineEdit用法类似,不过这个可以支持富文本,也可以写html文本,一个**setPlainText(),另一个setHtml(),对应的获取方法toPlainText(),toHtml()**,其他的像获取光标位置,插入文本,设置字体样式等等就不多说了。

QRadioButton

单选,默认是同父级下所有的radio都是互斥,当然也可以通过QButtonGroup来设置互斥关系。

通过setChecked() 来设置默认选中/不选中,isChecked() 判断是否选中。

通过setEnabled(),setDisabled() 来设置控件可用,两个方法都可以,setEnabled(true)/,setDisabled(false)为可用,反之就是禁用。

1
2
3
4
5
6
7
8
9
#include <QButtonGroup>

QButtonGroup* group = new QButtonGroup();
group->addButton(ui->radioButton, 0);
group->addButton(ui->radioButton_2, 1);

ui->radioButton_2->setChecked(true);
ui->radioButton->setDisabled(true); // ui->radioButton->setEnabled(false);

QCheckBox

多选,常用方法与QRadioButton类似,不多说了。

QComboBox

下拉选项,与QListView用法类似(不知道还记得QListView这个不)。

常用的事件**currentIndexChanged(int index)**。

1
2
3
4
5
6
7
8
// 移除下标为2的数据
ui->cmbSex->removeItem(2);
// 添加一条数据在最后
ui->cmbSex->addItem("test");
// 插入一条数据在下标2
ui->cmbSex->insertItem(2, "test111");
// 获取当前选中的下标
ui->cmbSex->currentIndex();

QDateEdit/QTimeEdit/QDateTimeEdit

时间选择控件,一个是日期,一个是日期+时间,用法基本类似。

  • date/time 获取日期/时间
  • minimumDate/minimumTime 最小日期/时间
  • maximumDate/maximumTime 最大日期/时间
  • displayFormat 日期/时间格式化

除QTimeEdit外,其余两个可通过属性setCalendarPopup(true) 设置为弹出日期选择窗口。

小结

基本上常用的控件就是这几个,当然还有一些其他的表单控件没有说到,后续用的多了就整理下再补充吧。


Qt 系列(六)——表单
http://www.aprilblank.top/qt/form.html
作者
AprilBlank
发布于
2022年7月21日
许可协议