目录
样品展示
实现方案
1.原主界面基础上添加新的登录界面
然后产生相应的cpp文件,h文件,ui文件(选择无button按钮的Dialog)
2.进入ui文件,在主界面添加相应控件
3.其中密码输入框的属性可以修改下
登录功能的按钮实现(在cpp文件中),主界面的show()相关的函数注释掉(一般在自己程序的main文件中),通过点击按钮响应函数来设置主界面显示信号并隐藏登录界面,进而通过响应信号显示主界面。
具体代码
LogInDialog.cpp(账号设置成root,密码设置成888888,可自行修改)
#include "LogInDialog.h"
#include "ui_LogInDialog.h"
LogInDialog::LogInDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::LogInDialog)
{
ui->setupUi(this);
}
LogInDialog::~LogInDialog()
{
delete ui;
}
void LogInDialog::on_btn_log_clicked()//登录按钮(根据用户输入框和密码输入框)
{
if((ui->edit_name->text() == "root") && (ui->edit_pw->text() == "888888")){
this->hide();
emit showmain();
}
else if((ui->edit_name->text() == "") || (ui->edit_name->text() == "")){
QMessageBox::warning(this, tr("提示"), tr("用户名或密码不能为空"), QMessageBox::Yes);
ui->edit_name->clear();
ui->edit_name->setFocus();
}
else if(ui->edit_name->text() != "root"){
QMessageBox::warning(this, tr("提示"), tr("用户名不存在,请重新输入"), QMessageBox::Yes);
ui->edit_name->clear();
ui->edit_name->setFocus();
}
else if((ui->edit_name->text() == "root") && (ui->edit_pw->text()!= "888888")){
QMessageBox::warning(this, tr("提示"), tr("用户名密码不匹配,请重新输入"), QMessageBox::Yes);
ui->edit_name->setFocus();
}
}
void LogInDialog::on_btn_clear_clicked()//取消按钮(退出)
{
this->close();
}
LogInDialog.h
#ifndef LOGINDIALOG_H
#define LOGINDIALOG_H
#include <QMainWindow>
#include <QMessageBox>
namespace Ui {
class LogInDialog;
}
class LogInDialog : public QDialog
{
Q_OBJECT
public:
explicit LogInDialog(QWidget *parent = 0);
~LogInDialog();
signals:
void showmain();
private slots:
void on_btn_log_clicked();
void on_btn_clear_clicked();
private:
Ui::LogInDialog *ui;
};
#endif // LOGINDIALOG_H
其中main.cpp文件对主界面的show()注释掉,与登录界面的登录按键捆绑起来
int main(int argc, char *argv[])
{
QTextCodec* codec = QTextCodec::codecForName( "UTF-8");//这一行以及下面3行根据主界面窗口决定要不要
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings (codec);
QApplication a(argc, argv);
LogInDialog logIn;
MainWindow w;
logIn.setWindowTitle("登录界面");
logIn.show();
w.resize(1500,750); // 设置默认窗口初始大小
//w.show();
QObject::connect(&logIn, SIGNAL(showmain()), &w, SLOT(receiveLogin()));// 登录信号与主界面连接
w.move((QApplication::desktop()->width() - w.width()) / 2, (QApplication::desktop()->height() - w.height()) / 2); // 窗口设置居中显示
return a.exec();
}
然后在主界面的mainwindow.cpp中加入函数receiveLogin()
void MainWindow::receiveLogin()//跳转
{
this->show();
}
另外需要注意的是头文件的导入这些。