1. 程式人生 > >Qt小程式(五)-簡單Ui介面操作

Qt小程式(五)-簡單Ui介面操作

目錄

前言

剛剛學習瞭如何使用ui介面檔案建立對話方塊,用到了一些常用的操作,包括訊號與槽等,這樣的東西都是套路化的,只有記錄一遍,以後只要按操作執行就不會出現問題了應該,所以特此記錄下先!

ui介面操作

  • 建立一個Label
  • 建立一個LineEdit
  • 建立兩個Push Button
    1
    直接拖動Widget Box中的控制元件即可,但是這時候是沒有佈局的。我給Label設定的文字資訊為&Cell Location,給兩個PushButton設定的objectName分別為okButtoncloseButton
  • 設定Buddies
    需要給labellineEdit設定繫結(至少我是這麼理解的,詞彙可能不專業),在選單欄選擇編輯,選擇Edit Buddies。然後在labellineEdit之間連線即表示Buddies
    2
    設定Buddies,如下圖:
    3
    注意,這時候是處於Edit Buddies狀態,如果需要回到原來的狀態,需要在選單欄編輯中選擇Edit Widgets
  • 設定Horizontal Spacer
    如果預設對labellineEdit使用水平佈局,對兩個PushButton使用水平佈局,然後對整體使用垂直佈局,如下圖:
    4
    所以,為了保證美觀,我們可以使用Horizontal Spacer
    ,使用效果如下:
    5
  • okButtoncloseButton新增訊號與槽
    選單欄選擇編輯,選擇Edit Signals/Slots。然後對兩個Push Button分別設定訊號與槽
    6
    注意:要回到編輯狀態,要使用在選單欄編輯中選擇Edit Widgets
  • 設定lineEdit在有輸入的時候,OK按鈕才會有效,在右側的屬性中設定enabled勾選去除。同時我們可以在程式碼中設定正則表示式來限制輸入,同時在輸入的時候設定槽函式來啟動OK按鈕。
    這裡使用 on_lineEdit_textChanged函式作為lineEdit輸入的槽函式
    槽函式程式碼如下:
void Dialog::on_lineEdit_textChanged
() { ui->okButton->setEnabled(ui->lineEdit->hasAcceptableInput()); }
  • lineEdit設定訊號與槽
    選單欄選擇編輯,選擇Edit Signals/Slots,在彈出介面lineEdit中選擇textChanged,然後在Dialog選擇編輯,然後新增我們自己寫的槽函式on_lineEdit_textChanged
    7

對話方塊程式碼

  • dialog.h
#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>

namespace Ui {
class Dialog;
}

class Dialog : public QDialog
{
    Q_OBJECT

public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();
private slots:
    void on_lineEdit_textChanged();

private:
    Ui::Dialog *ui;
};

#endif // DIALOG_H
  • dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);

    QRegExp regExp("[A-Za-z][1-9][0-9]{0,2}");
    // this represent parent object; if parent object delete, all the child object will be delete
    ui->lineEdit->setValidator(new QRegExpValidator(regExp, this));
}

Dialog::~Dialog()
{
    delete ui;
}

void Dialog::on_lineEdit_textChanged()
{
    ui->okButton->setEnabled(ui->lineEdit->hasAcceptableInput());
}

建立效果

8

總結

學習!分享!感謝!