赞
踩
步骤:
1. 点“new project”,新建“Qt Widgets Application”,点右下角的按钮“choose”;自定义一个工程名YonghuLogin,基类名选择“QWidget”,类名随意,点“下一步”“完成”;运行就生成了一个以QWidget为基类的主界面。
2. 点“文件—新建项目—Qt—Qt设计师界面类”,点右下角“choose”,选择“Dialog without Buttons”,自定义类名为logindialog,点“完成”生成了一个新的.h与.cpp与.ui三个文件;在这个对话框上添加用户登录界面所需的按钮控件。
3. 添加文本输入框、登陆,退出按钮 后,在logindialog.cpp中添加click函数如下:
点击“登陆”按钮,在下方 Signals and slots editor 框中点击“+”下拉关联信号和槽,即Sender发送方设为 enterBtn,Signal信号 设为 clicked(),Receive接收方 设为 myDlg,Slot槽 设为accept(),如下图:
代码如下:
#include "logindialog.h"
#include "ui_logindialog.h"
//______________
#include<QMessageBox> //QmessageBox的头文件
//______________
//构造函数
LoginDialog::LoginDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::LoginDialog)
{
ui->setupUi(this);
ui->pwdLineEdit->setEchoMode(QLineEdit::Password);//在构造函数里将密码框的显示设置为黑点,不可见
}
//析构函数
LoginDialog::~LoginDialog()
{
delete ui;
}
//登录
void LoginDialog::on_loginBtn_clicked()
{
//accept();//accept作用是:将当前的窗口隐藏(这样就做到子窗口功能消失这个功能),并且发送accepted信号,也就是设置设置结果代码为Accepted。
if(ui->usrLineEdit->text()/*.trimmed()*/==tr("QT")&&ui->pwdLineEdit->text()==tr("123456"))
{
//加trimmed()可以去除用户名字符串开头和结尾的空白字符
accept();
}
else
{
//如果不正确,弹出警告框
QMessageBox::warning(this,tr("warning"),tr("用户名或密码错误!"),QMessageBox::Yes);
//如果还想清空用户名、密码框,并且光标自动跳转到用户名输入框,就继续下面
ui->usrLineEdit->clear();
ui->pwdLineEdit->clear();
ui->usrLineEdit->setFocus();//将光标移到用户名框内
}
}
//退出
void LoginDialog::on_exitBtn_clicked()
{
close();
}
在main.cpp文件中,修改main(),如下:
#include "widget.h"
#include <QApplication>
//_______
#include "logindialog.h"
//_______
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
//w.show();//显示主界面
//return a.exec();
// 改写如下
LoginDialog logindlg;//建立自己新建的类的对象
if(logindlg.exec()==QDialog::Accepted) //利用 Accepted 信号判断 enterBtn 是否被按
{
w.show(); //如果被按下,显示主窗口
return a.exec(); //程序一直执行,直到主窗口关闭
}
else
{
return 0;//如果没被按下,则不会进入主窗口,整个程序结束运行
}
}
【注:】注意要添加头文件
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。