1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100#pragma once
#include <QMainWindow>
#include <QStackedWidget>
#include <QMenuBar>
#include <QMessageBox>
//#include <QProcess>
#include <QDesktopServices>
#include <QHBoxLayout>
#include <QSettings>
//#include <QDebug>
#include <Lib/header.h>
#include "Widget/sidebar.h"
#include "mw/HomePage/homepage.h"
#include "mw/Edit/editview.h"
#include "Dialog/settingsdialog.h"
#include "Dialog/newprojdialog.h"
#include "Menu/rflmenu.h"
class MainWindow : public QMainWindow
{
Q_OBJECT
protected:
void changeEvent(QEvent *ev) override;
void closeEvent(QCloseEvent *ev) override;
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow() override;
void setCurrentView(const QString &name);
void setCurrentView(MainWindowView *view);
void updateProjMenuState();
void updateTr();
public slots:
void onNewProj();
void onOpenProj();
void onOpenProj(const QString &filePath);
void onSaveProj();
void onSaveProjAs();
void onAbout();
void onRFLMenuRequested(const QPoint &pos);
private:
QRect mNormalGeometry; //默认位置大小
QStackedWidget *mStackedWidget = new QStackedWidget; //视图控件
SideBar *mSideBar = new SideBar; //侧边栏
struct Menu {
QMenu file;
QAction file_actNewProj;
QAction file_actOpenProj;
QAction file_actSave;
QAction file_actSaveAs;
QMenu other;
QAction other_actAbout;
QAction other_actAboutQt;
QAction other_actSettings;
void init(QMenuBar *menuBar);
void tr();
} mMenu;
struct View
{
QString iconPath;
QString name;
QString(*TrFn)();
MainWindowView *p;
};
HomePage *mViewHomePage = new HomePage;
EditView *mViewEdit = new EditView;
View mViews[2] = {
{ ":/SideBtn/qrc/HomePage.png", "HomePage", []()->QString { return tr("HomePage"); }, mViewHomePage },
{ ":/SideBtn/qrc/Edit.png", "Edit", []()->QString { return tr("Edit"); }, mViewEdit }
};
QMap<QString, MainWindowView*> mMapViews = {
{ "HomePage", mViewHomePage },
{ "Edit", mViewEdit }
};
};