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: