本文记录QT常见控件的操作示例。包括:QPushBotton、QLabel、QComboBox、QSlider、QSpinBox、编辑框(QLineEdit/QPlainTextEdit/QTextEdit) 等等。以使用为导向,慢慢补充。
常见的控件,有很多设置项是相同的。如使能/禁止,可见/不可见,设置提示语,等等。
QPushBotton
常用操作:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| 使能、禁止: ui->pushButton->setEnabled(true); ui->pushButton->setEnabled(false); 可见/不可见: ui->pushButton->setVisible(true); ui->pushButton->setVisible(false); 提示语: ui->pushButton->setToolTip("button tips"); 按钮扁平: ui->pushButton->setFlat(true); 设置文字、图标等: ui->pushButton->setText(tr("退出程序")); ui->pushButton->setIconSize(ui->pushButton->rect().size()); // 设置大小 ui->pushButton->setIcon(QIcon(":images/exit.png")); 设置字体或大小: QFont qFont; qFont.setBold(true); // 这里设置加粗,其它默认 ui->pushButton->setFont(qFont); ui->pushButton->setText(tr("监听端口")); 清除文字: ui->pushButton->clear();
|
单击事件:
1 2 3 4 5 6 7 8
| 控件名称为 pushButton。 private slots: void on_pushButton_clicked();
void MainWindow::on_pushButton_clicked() { // ... }
|
QLabel
1 2 3 4 5
| 设置图片: QPixmap pixmap(":images/logo.png"); ui->label->setPixmap(pixmap); ui->label->setFixedSize(128, 128); ui->label->setScaledContents(true);
|
QComboBox
1 2 3 4 5 6 7 8 9 10 11 12 13
| 添加数据项: ui->comboBox->addItem("0"); // 单项添加 QStringList list; list.clear(); list << "1200" << "2400" << "4800" << "9600" << "14400" << \ "19200" << "38400" << "43000" << "57600" << "76800" << \ "115200" << "230400" << "256000" << "460800" << "921600"; ui->comboBox->addItems(list); // 多项添加 设置当前项: ui->comboBox->setCurrentText(tr("115200")); 获取当前项: ui->comboBox->currentText();
|
QSlider
Horizontal Slider 和 Vertical Slider类似。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 设置范围及当前值: ui->horizontalSlider->setRange(0, 100); ui->horizontalSlider->setValue(30); 获取值: int val = ui->horizontalSlider->value();
数据变化事件 private slots: void on_horizontalSlider_valueChanged(int value);
void MainWindow::on_horizontalSlider_valueChanged(int value) { showDebugInfo(value); }
|
QSpinBox
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 设置范围及当前值: ui->spinBox->setRange(0, 100); ui->spinBox->setValue(30); 获取值: int val = ui->spinBox->value();
数据变化事件 private slots: void on_spinBox_valueChanged(int value);
void MainWindow::on_spinBox_valueChanged(int arg1) { showDebugInfo(arg1); }
|
文本框
本节的文本框在一定程度上可以认为是一个各类的控件,但实际是不相干的,其中 QTextEdit 和 QPlainEdit 继承自 QAbstractScrollArea,而 QLineEdit 则继承于 QWidget。注意,前两者最终还是继承 QWidget,但是 QLineEdit 直接继承 QWidget 的。
QLineEdit
QLineEdit 用于单行文字的显示和输入。如账号、密码,等。
1 2 3 4 5 6 7 8 9
| ui->lineEdit->setPlaceholderText("username"); // 占位字符串,用于提示语 ui->lineEdit->setText("lineEdit"); // 文字 ui->lineEdit->setReadOnly(true); // 只读 ui->lineEdit->setAlignment(Qt::AlignHCenter); // 居中对齐 ui->lineEdit->setMaxLength(6); // 文字最大长度 // QLineEdit::Password 文字用圆点替换, // QLineEdit::PasswordEchoOnEdit 输入时显示,结束后圆点替换 // QLineEdit::NoEcho // 不显示任何内容,用于长度保护 ui->lineEdit->setEchoMode(QLineEdit::Password);
|
事件(控件名为 lineEdit):
1 2
| on_lineEdit_textChanged:输入文字过程中响应 on_lineEdit_editingFinished:文字输入结束后响应(如按回车或Tab键)
|
QPlainTextEdit
用于纯文本的输入和显示。
1 2 3 4 5 6
| ui->plainTextEdit->setPlaceholderText("sth text here"); ui->plainTextEdit->setPlainText("foo"); ui->plainTextEdit->setReadOnly(true); // 追加,分别支持html和纯文本 ui->plainTextEdit->appendHtml("<font color=\"red\"> red </font>"); ui->plainTextEdit->appendPlainText("add");
|
QTextEdit
用于纯文本、富文本的输入和显示。
1 2 3 4 5
| ui->textEdit->setPlaceholderText("sth text here"); ui->textEdit->setPlainText("foo"); // !! 也有setPlainText函数 ui->textEdit->setText("foo"); ui->textEdit->setReadOnly(true); ui->textEdit->append("<font color=\"red\"> red </font>"); // 追加,支持html
|
QPlainTextEdit 和 QTextEdit 有textChanged
事件响应,但无editingFinished
事件。两者支持 HTML 语法,对于一些场合可提高友好性,如不同类别文字使用不同颜色显示,加粗、斜体等。
QTextBrower
继承自 QTextEdit,只读模式,添加导航功能。
1 2 3
| ui->textBrowser->setHtml("a<br>b"); // ui->textBrowser->setText("hello world\n"); ui->textBrowser->append("a<br>b");
|