![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczX0xiRGZkRGZ0Xy9GbvNGL2EzXlpXazxCMFpXT4VFShZjSYp1asdVWxQmMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLxczMwMTOzkTM5AjMwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
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: