Qt實踐錄:常見控件操作示例1

本文記錄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 年初八 陰天,形勢依然嚴峻,村裏大喇叭播報次數頻率加大

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章