#include<QDialog> 模态对话框
#include<QLabel> 文本
#include<QLineEdit> 输入文本
#include<QPushButton> 按钮
#include<QMessageBox> 消息框
基本属性了解:
userlab=new QLabel(this);
userlab->move(70,80);//在父控件的位置
userlab->setText(tr("Account"));//显示文本
userEdit->setPlaceholderText(tr("please input your account"));//提升文本
pwdEdit->setEchoMode(QLineEdit::Password);//设置输入文本为密文类型
connect(loginbtn,&QPushButton::clicked,this,&LoginDialog::login); //设置信号槽
connect(quitbtn,&QPushButton::clicked,this,&LoginDialog::close);//设置信号槽
1 新建 项目 选择appliacation
2 新建 C++class 名字为 LoginDialog 手动选择 为Dialog
3 进入 LoginDialog .h 编辑为:
#ifndef LOGINDIALOG_H
#define LOGINDIALOG_H
#include<QDialog>
#include<QLabel>
#include<QLineEdit>
#include<QPushButton>
#include<QMessageBox>
class LoginDialog : public QDialog
{
Q_OBJECT
private slots:
void login();
public:
explicit LoginDialog();
~LoginDialog();
QLabel *userlab;
QLabel *pwdlab;
QLineEdit *userEdit;
QLineEdit *pwdEdit;
QPushButton *loginbtn;
QPushButton *quitbtn;
};
#endif // LOGINDIALOG_H
然后在 LoginDialog.cpp 实现响应函数 login 和 析构函数 和构造函数
如下
#include "logindialog.h"
LoginDialog::LoginDialog()
{
userlab=new QLabel(this);
userlab->move(70,80);
userlab->setText(tr("Account"));
userEdit=new QLineEdit(this);
userEdit->move(140,80);
userEdit->setPlaceholderText(tr("please input your account"));
pwdlab=new QLabel(this);
pwdlab->move(70,130);
pwdlab->setText(tr("Password"));
pwdEdit=new QLineEdit(this);
pwdEdit->move(140,130);
pwdEdit->setEchoMode(QLineEdit::Password);
pwdEdit->setPlaceholderText(tr("please input your password"));
loginbtn=new QPushButton(this);
loginbtn->move(50,200);
loginbtn->setText(tr("login"));
quitbtn=new QPushButton(this);
quitbtn->move(210,200);
connect(loginbtn,&QPushButton::clicked,this,&LoginDialog::login);
connect(quitbtn,&QPushButton::clicked,this,&LoginDialog::close);
}
LoginDialog::~LoginDialog(){
}
void LoginDialog::login(){
//trimmed() 去掉空格
if(userEdit->text().trimmed()==tr("json96")&&pwdEdit->text().trimmed()==(tr("123456hj")))
{
accept();
}
else
{
QMessageBox::warning(this,tr("waring"),tr("account and password not is invaild"),QMessageBox::Yes);
userEdit->clear();
pwdEdit->clear();
userEdit->setFocus();
}
}
main文件 如下:
#include "mainwindow.h"
#include <QApplication>
#include"logindialog.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
int res=0;
LoginDialog lgdig;
res=lgdig.exec();//登录对话框执行返回结果
if(res==QDialog::Accepted)
{
w.show();
return a.exec();
}
else{
return 0;
}
}
源码地址:https://gitee.com/codemaner/qt_learning_record/tree/master/Demo11