天天看點

Qt 設計師 designer 登入對話框案例1. 通過設計師生成ui檔案

Qt 設計師 designer 登入對話框案例1. 通過設計師生成ui檔案

1. 通過設計師生成ui檔案

Qt 設計師 designer 登入對話框案例1. 通過設計師生成ui檔案
  • 1. 把username,passwd和後面的兩個lineEdit,全框一起,然後栅格布局。
  • 2. 給buttonBox兩邊加彈簧,後把三個控件框一起,水準布局。
  • 3. 這是中間可以看做有兩個大控件,給頂部和底部加兩個彈簧,點選對話框空白位置,垂直布局。

LoginDialog.h

#ifndef __LOGINGDIALOG_H
#define __LOGINGDIALOG_H
#include "ui_LoginDialog.h"
#include <QDialog>
#include <QMessageBox>

class LoginDialog:public QDialog{
    Q_OBJECT // moc
public:
    LoginDialog(void);
    ~LoginDialog(void);
public slots:
    //處理OK按鈕的槽函數
    void onAccpeted(void);
    //處理Cancel按鈕的槽函數
    void onRejected(void);
private:
    Ui::LoginDialog* ui;
};
#endif //__LOGINGDIALOG_H
           

LoginDialog.cpp

#include "LoginDialog.h"
#include <QDebug>

// 構造函數
LoginDialog::LoginDialog(void):ui(new Ui::LoginDialog){
    // 界面初始化
    ui->setupUi(this);
    // 信号和槽的連接配接
    // 點選ok發送信号accepted
    QObject::connect(ui->m_btnBox, SIGNAL(accepted(void)), this, SLOT(onAccpeted(void)));
    // 點選cancel發送信号rejected
    QObject::connect(ui->m_btnBox, SIGNAL(rejected(void)), this, SLOT(onRejected(void)));
}

// 析構函數
LoginDialog::~LoginDialog(void){
    delete ui;
}

//處理OK按鈕的槽函數
void LoginDialog::onAccpeted(void){
    if(ui->m_usernameEdit->text() == "xh" && ui->m_passwdEdit->text() == "123"){
        qDebug()<<"登入成功";
        close();
    }
    else{
        
        // 建立消息提示框
        QMessageBox msgBox(
            QMessageBox::Critical, // 圖示
            "Error",               // 标題
            "使用者名或密碼錯誤",       // 按鈕
            QMessageBox::Ok,       // 按鈕
            this);                 // 父視窗
        // 顯示消息提示框,并進入事件循環
        msgBox.exec();
    }
}

//處理Cancel按鈕的槽函數
void LoginDialog::onRejected(void){
    // 建立消息提示框
    QMessageBox msgBox(
        QMessageBox::Question,              // 圖示
        "登入",                              // 标題
        "是否真的要取消登入",                  // 按鈕
        QMessageBox::Yes|QMessageBox::No,   // 按鈕
        this);                              // 父視窗
    // 顯示消息提示框,并進入事件循環, 如果點選Yes關閉對話框
    if(msgBox.exec() == QMessageBox::Yes){
        close();
    }
}
           

main.cpp

#include "LoginDialog.h"
#include <QApplication>

int main(int argc, char** argv){
    QApplication app(argc, argv);
    LoginDialog login;
    login.show();
    return app.exec();
}
           

result:

Qt 設計師 designer 登入對話框案例1. 通過設計師生成ui檔案
Qt 設計師 designer 登入對話框案例1. 通過設計師生成ui檔案
Qt

繼續閱讀