#pragma once#include<QMainWindow>#include<QVBoxLayout>#include<QComboBox>#include<QPushButton>#include<QLineEdit>#include"logindlg.h"#include"scoredetaildlg.h"class MainPage : public QMainWindow{ Q_OBJECTpublic: explicitMainPage(QWidget * parent = nullptr); public: voidinitUI(); voidinitSlots();signals: voidsigTest(int, QString);private slots: voidonIndexChanged(int param1);private: QVBoxLayout *m_qvboxlayout_0; QPushButton *m_btn_login; QPushButton *m_btn_max; QPushButton *m_btn_score; QComboBox *m_qcombobox_0; QLineEdit *m_qlineedit_1; // 用户变量 LoginDlg* m_logdlg; ScoreDetailDlg* m_scoredlg; int m_count;};// Source code:#include"mainpage.h"#include<QtWidgets>MainPage::MainPage(QWidget * parent) : QMainWindow(parent), m_qvboxlayout_0(nullptr), m_btn_login(nullptr), m_btn_max(nullptr), m_btn_score(nullptr), m_qcombobox_0(nullptr), m_qlineedit_1(nullptr), m_logdlg(new LoginDlg()), m_scoredlg(new ScoreDetailDlg()){ resize(800, 600); initUI(); initSlots();}voidMainPage::initUI(){ setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); m_qvboxlayout_0 = new QVBoxLayout; m_btn_max = new QPushButton; m_btn_max->setText("最大化"); m_qvboxlayout_0->addWidget(m_btn_max); m_btn_login = new QPushButton; m_btn_login->setText("显示Login"); m_qvboxlayout_0->addWidget(m_btn_login); m_btn_score = new QPushButton; m_btn_score->setText("学生成绩"); m_qvboxlayout_0->addWidget(m_btn_score); m_qcombobox_0 = new QComboBox; m_qcombobox_0->addItem("Item 1"); m_qvboxlayout_0->addWidget(m_qcombobox_0); m_qlineedit_1 = new QLineEdit; m_qlineedit_1->setText("LineEdit"); m_qvboxlayout_0->addWidget(m_qlineedit_1); QWidget * centralWidget = new QWidget(this); setCentralWidget(centralWidget); centralWidget->setLayout(m_qvboxlayout_0);}voidMainPage::initSlots(){ connect(m_qpushbutton_0, &QPushButton::clicked, this, & MainPage::showMaximized); connect(m_btn_login, &QPushButton::clicked, m_logdlg, & LoginDlg::exec); connect(m_qcombobox_0, &QComboBox::currentIndexChanged, this, & MainPage::onIndexChanged); connect(m_qpushbutton_0, &QPushButton::clicked, m_scoredlg, & ScoreDetailDlg::exec); }voidMainPage::onIndexChanged(int param1){ // TODO: Here add yourself code}
#define IDD_MAIN_PAGE_DLG 101#define IDC_BTN_MAXIMIZE 1001#define IDC_BTN_LOGIN 1002#define IDC_BTN_SCORE 1003#define IDC_COMBO_BOX 1004#define IDC_EDIT_LINE 1005IDD_MAIN_PAGE_DLG DIALOGEX 0, 0, 300, 200STYLE DS_SETFONT | DS_MODALFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENUCAPTION "Main Page"FONT 9, "Segoe UI"BEGIN PUSHBUTTON "最大化", IDC_BTN_MAXIMIZE, 20, 20, 80, 25 PUSHBUTTON "显示Login", IDC_BTN_LOGIN, 20, 50, 80, 25 PUSHBUTTON "学生成绩", IDC_BTN_SCORE, 20, 80, 80, 25 COMBOBOX IDC_COMBO_BOX, 120, 20, 150, 60, CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP EDITTEXT IDC_EDIT_LINE, 120, 50, 150, 15, ES_AUTOHSCROLLENDMainPageDlg.h#pragma once#include"LoginDlg.h"#include"ScoreDetailDlg.h"class CMainPageDlg : public CDialogEx{ DECLARE_DYNAMIC(CMainPageDlg)public: CMainPageDlg(CWnd* pParent = nullptr); // 标准构造函数 virtual ~CMainPageDlg(); enum { IDD = IDD_MAIN_PAGE_DLG };protected: virtualvoidDoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 virtual BOOL OnInitDialog(); afx_msg voidOnBnClickedBtnMaximize(); afx_msg voidOnBnClickedBtnLogin(); afx_msg voidOnBnClickedBtnScore(); afx_msg voidOnCbnSelchangeComboBox(); DECLARE_MESSAGE_MAP()private: CLoginDlg* m_pLogDlg; CScoreDetailDlg* m_pScoreDlg; int m_count;};MainPageDlg.cpp#include"pch.h"#include"YourApp.h"// 你的应用类头文件#include"MainPageDlg.h"#include"afxdialogex.h"IMPLEMENT_DYNAMIC(CMainPageDlg, CDialogEx)CMainPageDlg::CMainPageDlg(CWnd* pParent /*=nullptr*/) : CDialogEx(IDD_MAIN_PAGE_DLG, pParent) , m_pLogDlg(nullptr) , m_pScoreDlg(nullptr) , m_count(0){ m_pLogDlg = new CLoginDlg(this); m_pScoreDlg = new CScoreDetailDlg(this);}CMainPageDlg::~CMainPageDlg(){ delete m_pLogDlg; delete m_pScoreDlg;}voidCMainPageDlg::DoDataExchange(CDataExchange* pDX){ CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_COMBO_BOX, m_ComboBox); // 可选:绑定控件变量}BEGIN_MESSAGE_MAP(CMainPageDlg, CDialogEx) ON_BN_CLICKED(IDC_BTN_MAXIMIZE, &CMainPageDlg::OnBnClickedBtnMaximize) ON_BN_CLICKED(IDC_BTN_LOGIN, &CMainPageDlg::OnBnClickedBtnLogin) ON_BN_CLICKED(IDC_BTN_SCORE, &CMainPageDlg::OnBnClickedBtnScore) ON_CBN_SELCHANGE(IDC_COMBO_BOX, &CMainPageDlg::OnCbnSelchangeComboBox)END_MESSAGE_MAP()BOOL CMainPageDlg::OnInitDialog(){ CDialogEx::OnInitDialog(); // 设置初始状态 SetWindowText(_T("Main Page")); ModifyStyle(0, WS_MAXIMIZEBOX); // 确保有最大化按钮 // 初始化组合框 CComboBox* pCombo = (CComboBox*)GetDlgItem(IDC_COMBO_BOX); if (pCombo) { pCombo->AddString(_T("Item 1")); pCombo->SetCurSel(0); } // 初始化编辑框 GetDlgItem(IDC_EDIT_LINE)->SetWindowText(_T("LineEdit")); return TRUE; // return TRUE unless you set the focus to a control}voidCMainPageDlg::OnBnClickedBtnMaximize(){ ShowWindow(SW_MAXIMIZE);}voidCMainPageDlg::OnBnClickedBtnLogin(){ if (m_pLogDlg) { m_pLogDlg->DoModal(); // 相当于 Qt 的 exec() }}voidCMainPageDlg::OnBnClickedBtnScore(){ if (m_pScoreDlg) { m_pScoreDlg->DoModal(); }}voidCMainPageDlg::OnCbnSelchangeComboBox(){ CComboBox* pCombo = (CComboBox*)GetDlgItem(IDC_COMBO_BOX); if (pCombo) { int index = pCombo->GetCurSel(); CString text; pCombo->GetLBText(index, text); // TODO: 处理选择变化,相当于 onIndexChanged(int) // 你可以在这里 emit 自定义通知(如通过回调或全局事件) }}