想c++在qt中实现一个界面登录的功能

想c++在qt中实现一个界面登录的功能想写一个学生管理系统,有登录界面,可以选择不同的登录身份。怎么实现不同的身份登录对应的界面呢?

供参考:

main.cpp 文件

#include <QApplication>
#include "clogindialog.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    CLoginDialog *loginDlg = new CLoginDialog();
    loginDlg->show();
    return app.exec();
}

clogindialog.h 文件

#ifndef CLOGINDIALOG_H
#define CLOGINDIALOG_H

#include <QDialog>
#include <QLabel>
#include <QPushButton>
#include <QComboBox>
#include <QLayout>

class CLoginDialog : public QDialog
{
    Q_OBJECT
public:
    explicit CLoginDialog(QWidget *parent = nullptr);

private slots:
    void showMainWindow();
private:
    QComboBox *userTypeCombo;

};

#endif // CLOGINDIALOG_H

clogindialog.cpp 文件

#include "clogindialog.h"
#include "cwidgeta.h"
#include "cwidgetb.h"

CLoginDialog::CLoginDialog(QWidget *parent) : QDialog(parent)
{
    QHBoxLayout *lineLayout1 = new QHBoxLayout();
    lineLayout1->addWidget(new QLabel(tr("登录类型")));
    userTypeCombo = new QComboBox();
    userTypeCombo->addItem(tr("教师"),0);
    userTypeCombo->addItem(tr("学生"),1);
    lineLayout1->addWidget(userTypeCombo);

    QHBoxLayout *lineLayout2 = new QHBoxLayout();
    lineLayout2->addStretch();
    QPushButton *loginBt = new QPushButton(tr("登录"));
    connect(loginBt,&QPushButton::clicked,this,&CLoginDialog::showMainWindow);
    lineLayout2->addWidget(loginBt);

    QVBoxLayout *mainLayout = new QVBoxLayout();
    mainLayout->addLayout(lineLayout1);
    mainLayout->addLayout(lineLayout2);

    setLayout(mainLayout);

}

void CLoginDialog::showMainWindow()
{
    if(userTypeCombo->currentData() == 0){
        CWidgetA *a = new CWidgetA();
        a->show();
    }else{
        CWidgetB *b = new CWidgetB();
        b->show();
    }

    close();
}

cwidgeta.h 文件

#ifndef CWIDGETA_H
#define CWIDGETA_H

#include <QMainWindow>

class CWidgetA : public QMainWindow
{
    Q_OBJECT
public:
    explicit CWidgetA(QWidget *parent = nullptr);
};

#endif // CWIDGETA_H

cwidgeta.cpp 文件

#include "cwidgeta.h"
#include <QLabel>
CWidgetA::CWidgetA(QWidget *parent) : QMainWindow(parent)
{
    setCentralWidget(new QLabel(tr("这是窗口A")));
}

cwidgetb.h


#ifndef CWIDGETB_H
#define CWIDGETB_H

#include <QMainWindow>

class CWidgetB : public QMainWindow
{
    Q_OBJECT
public:
    explicit CWidgetB(QWidget *parent = nullptr);
};

#endif // CWIDGETB_H

cwidgetb.cpp

#include "cwidgetb.h"
#include <QLabel>

CWidgetB::CWidgetB(QWidget *parent) : QMainWindow(parent)
{
     setCentralWidget(new QLabel(tr("这是窗口B")));
}

追问

万分感谢

如果绘制绘图界面(.ui)文件,调用时是同样调用源文件就可以了吗

追答

是的

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-08-10
1.提供登录界面(客户端)
2.服务器端用数据库来存储用户名和密码
3.注册时客户端将注册信息发送给服务器端,并进行验证,如果注册名可用,添加进数据库并返回客户端添加成功信息。
4.登录时客户端将登录信息发送给服务器端进行验证,服务端返回验证结果。追问

可以说的具体点吗? 我主要是想知道怎么用不同的登录身份调用不同的操作界面

第2个回答  2018-08-10
扩展文本编辑控件
检测输入并添加定时器
有输入时,先把输入保存起来
半秒后把新输入改为‘*’输出
原理就是这样的本回答被网友采纳
相似回答