供参考:
![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/8694a4c27d1ed21b8b43592ba16eddc450da3f71?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)
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)文件,调用时是同样调用源文件就可以了吗
追答是的