Qt-关于主程序增加登录界面

目录

样品展示 

实现方案

1.原主界面基础上添加新的登录界面

2.进入ui文件,在主界面添加相应控件

3.其中密码输入框的属性可以修改下

具体代码


样品展示 

实现方案

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();
}

 另外需要注意的是头文件的导入这些。

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星浩前进中

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值