本文記錄QT常見控件的操作示例。包括:QPushBotton、QLabel、QComboBox、QSlider、QSpinBox、編輯框(QLineEdit/QPlainTextEdit/QTextEdit) 等等。以使用爲導向,慢慢補充。
常見的控件,有很多設置項是相同的。如使能/禁止,可見/不可見,設置提示語,等等。
QPushBotton
常用操作:
使能、禁止:
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();
單擊事件:
控件名稱爲 pushButton。
private slots:
void on_pushButton_clicked();
void MainWindow::on_pushButton_clicked()
{
// ...
}
QLabel
設置圖片:
QPixmap pixmap(":images/logo.png");
ui->label->setPixmap(pixmap);
ui->label->setFixedSize(128, 128);
ui->label->setScaledContents(true);
QComboBox
添加數據項:
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類似。
設置範圍及當前值:
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
設置範圍及當前值:
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 用於單行文字的顯示和輸入。如賬號、密碼,等。
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):
on_lineEdit_textChanged:輸入文字過程中響應
on_lineEdit_editingFinished:文字輸入結束後響應(如按回車或Tab鍵)
QPlainTextEdit
用於純文本的輸入和顯示。
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
用於純文本、富文本的輸入和顯示。
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,只讀模式,添加導航功能。
ui->textBrowser->setHtml("a<br>b"); //
ui->textBrowser->setText("hello world\n");
ui->textBrowser->append("a<br>b");
李遲 2020.2.1 年初八 陰天,形勢依然嚴峻,村裏大喇叭播報次數頻率加大