diff --git a/applications/emsConfigurer/emscfgres.qrc b/applications/emsConfigurer/emscfgres.qrc
index f872e79..8fe5920 100644
--- a/applications/emsConfigurer/emscfgres.qrc
+++ b/applications/emsConfigurer/emscfgres.qrc
@@ -3,5 +3,14 @@
images/emscfg-main.ico
images/hj-net.png
images/icon.png
+ images/PageAir.png
+ images/PageBattery.png
+ images/PageFan.png
+ images/PagePower.png
+ images/PagePV.png
+ images/PageSensor.png
+ images/PageSetting.png
+ images/PageSwitch.png
+ images/PageUps.png
diff --git a/applications/emsConfigurer/images/PageAir.png b/applications/emsConfigurer/images/PageAir.png
new file mode 100644
index 0000000..6ef7023
Binary files /dev/null and b/applications/emsConfigurer/images/PageAir.png differ
diff --git a/applications/emsConfigurer/images/PageBattery.png b/applications/emsConfigurer/images/PageBattery.png
new file mode 100644
index 0000000..3484ae6
Binary files /dev/null and b/applications/emsConfigurer/images/PageBattery.png differ
diff --git a/applications/emsConfigurer/images/PageFan.png b/applications/emsConfigurer/images/PageFan.png
new file mode 100644
index 0000000..30d5176
Binary files /dev/null and b/applications/emsConfigurer/images/PageFan.png differ
diff --git a/applications/emsConfigurer/images/PagePV.png b/applications/emsConfigurer/images/PagePV.png
new file mode 100644
index 0000000..95735a1
Binary files /dev/null and b/applications/emsConfigurer/images/PagePV.png differ
diff --git a/applications/emsConfigurer/images/PagePower.png b/applications/emsConfigurer/images/PagePower.png
new file mode 100644
index 0000000..3e71b0f
Binary files /dev/null and b/applications/emsConfigurer/images/PagePower.png differ
diff --git a/applications/emsConfigurer/images/PageSensor.png b/applications/emsConfigurer/images/PageSensor.png
new file mode 100644
index 0000000..6f0b897
Binary files /dev/null and b/applications/emsConfigurer/images/PageSensor.png differ
diff --git a/applications/emsConfigurer/images/PageSetting.png b/applications/emsConfigurer/images/PageSetting.png
new file mode 100644
index 0000000..e1671f6
Binary files /dev/null and b/applications/emsConfigurer/images/PageSetting.png differ
diff --git a/applications/emsConfigurer/images/PageSwitch.png b/applications/emsConfigurer/images/PageSwitch.png
new file mode 100644
index 0000000..d8bc768
Binary files /dev/null and b/applications/emsConfigurer/images/PageSwitch.png differ
diff --git a/applications/emsConfigurer/images/PageUps.png b/applications/emsConfigurer/images/PageUps.png
new file mode 100644
index 0000000..30bc5d5
Binary files /dev/null and b/applications/emsConfigurer/images/PageUps.png differ
diff --git a/applications/emsConfigurer/maindialog.cpp b/applications/emsConfigurer/maindialog.cpp
index 0eb97d8..11ce118 100644
--- a/applications/emsConfigurer/maindialog.cpp
+++ b/applications/emsConfigurer/maindialog.cpp
@@ -1,14 +1,216 @@
-#include "maindialog.h"
+#include "maindialog.h"
#include "ui_maindialog.h"
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
MainDialog::MainDialog(QWidget *parent) :
- QDialog(parent),
+ QMainWindow (parent),
ui(new Ui::MainDialog)
{
- ui->setupUi(this);
+ //ui->setupUi(this);
+
+ this->setWindowIcon(QIcon(":/images/icon.png"));
+
+ InitializeUI();
+
+ connect(m_pDeviceListWidget, &QListWidget::currentItemChanged, this, &MainDialog::changePage);
+
+ // Load the window state
+ loadWindowState();
}
MainDialog::~MainDialog()
{
delete ui;
}
+
+void MainDialog::InitializeUI()
+{
+ // Create central widget and layout
+ QWidget *centralWidget = new QWidget(this);
+ QVBoxLayout *mainLayout = new QVBoxLayout(centralWidget);
+
+ //Create toolbar
+ CreateToolbar();
+
+ // Set up the QListWidget
+ m_pDeviceListWidget = new QListWidget(this);
+
+ m_pDeviceListWidget->setStyleSheet("background-color:transparent");
+ m_pDeviceListWidget->setViewMode(QListView::IconMode);
+ m_pDeviceListWidget->setIconSize(QSize(70, 70));
+ m_pDeviceListWidget->setGridSize(QSize(145, 100)); // item 的大小
+ m_pDeviceListWidget->setMovement(QListView::Static);
+
+ m_pDeviceListWidget->setMaximumWidth(170);
+ m_pDeviceListWidget->setMinimumWidth(170); // Set minimum width
+
+ m_pDeviceListWidget->setResizeMode(QListView::Fixed);
+
+ m_pDeviceListWidget->setSpacing(25);
+ //m_pDeviceListWidget->setUniformItemSizes(true); // 所有的 item 一样大
+ m_pDeviceListWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
+
+
+ CreateIcon(QIcon(":/images/PagePower.png"),tr("Power"));
+ CreateIcon(QIcon(":/images/PageBattery.png"),tr("Battery"));
+ CreateIcon(QIcon(":/images/PageSwitch.png"),tr("Switch"));
+ CreateIcon(QIcon(":/images/PageAir.png"),tr("Air"));
+ CreateIcon(QIcon(":/images/PageFan.png"),tr("Fan"));
+ CreateIcon(QIcon(":/images/PageSensor.png"),tr("Sensor"));
+
+ // Set up the QStackedWidget
+ CreateTablePage();
+
+ // Set up the QSplitter to manage the resizing of QListWidget and QStackedWidget
+ QSplitter *splitter = new QSplitter(Qt::Horizontal, this);
+ splitter->addWidget(m_pDeviceListWidget);
+ splitter->addWidget(m_pDevicestackedWidget);
+ splitter->setSizes(QList({200, 600})); // Set initial sizes (200 for QListWidget, 600 for QStackedWidget)
+
+ // Disable splitter dragging
+ splitter->setChildrenCollapsible(false);
+
+ // Set up layout
+ mainLayout->addWidget(m_pMainToolBar);
+ mainLayout->addWidget(splitter);
+ centralWidget->setLayout(mainLayout);
+
+ // Set central widget
+ setCentralWidget(centralWidget);
+
+ // Set initial size of the dialog
+ setWindowTitle(tr("EMS Configurer "));
+
+ //resize(800, 600);
+
+ setMinimumSize(1024, 768);
+}
+
+
+void MainDialog::CreateToolbar()
+{
+ m_pMainToolBar = new QToolBar(this);
+ m_pMainToolBar->setIconSize(QSize(48, 48));
+
+
+ // Create actions for the toolbar
+ QAction *action1 = new QAction(QIcon(":/images/icon.png"), "Button 1", this);
+ QAction *action2 = new QAction(QIcon(":/images/icon.png"), "Button 2", this);
+ QAction *action3 = new QAction(QIcon(":/images/icon.png"), "About...", this);
+
+ // Add actions to the toolbar
+ m_pMainToolBar->addAction(action1);
+ m_pMainToolBar->addAction(action2);
+ m_pMainToolBar->addAction(action3);
+
+ // Connect actions to slots
+ connect(action1, &QAction::triggered, this, &MainDialog::onToolButton1Clicked);
+ connect(action2, &QAction::triggered, this, &MainDialog::onToolButton1Clicked);
+ connect(action3, &QAction::triggered, this, &MainDialog::onAboutButtonClicked);
+
+}
+
+void MainDialog::CreateTablePage()
+{
+ m_pDevicestackedWidget = new QStackedWidget(this);
+
+ QVBoxLayout *stackedWidgetLayout = new QVBoxLayout;
+ m_pDevicestackedWidget->setLayout(stackedWidgetLayout);
+
+ // Create and set up QTableView
+ QTableView *tableView = new QTableView(this);
+
+ // Create and set up a model for the table view
+ QStandardItemModel *model = new QStandardItemModel(4, 3, this); // 4 rows, 3 columns
+ model->setHorizontalHeaderLabels(QStringList() << "Column 1" << "Column 2" << "Column 3");
+
+ // Fill the model with data
+ for (int row = 0; row < 4; ++row)
+ {
+ for (int col = 0; col < 3; ++col)
+ {
+ QStandardItem *item = new QStandardItem(QString("Item %1-%2").arg(row).arg(col));
+ model->setItem(row, col, item);
+ }
+ }
+
+ tableView->setModel(model);
+
+ m_pDevicestackedWidget->addWidget(tableView); // Add QTableView as a page
+
+
+ m_pDevicestackedWidget->addWidget(new QPushButton("Page 2"));
+ m_pDevicestackedWidget->addWidget(new QPushButton("Page 3"));
+ m_pDevicestackedWidget->addWidget(new QPushButton("Page 4"));
+ m_pDevicestackedWidget->addWidget(new QPushButton("Page 5"));
+ m_pDevicestackedWidget->addWidget(new QPushButton("Page 6"));
+
+
+
+
+}
+void MainDialog::CreateIcon(const QIcon& icon,QString text)
+{
+ QListWidgetItem *itemButton = new QListWidgetItem(m_pDeviceListWidget);
+ itemButton->setIcon(icon);
+ itemButton->setText(text);
+ itemButton->setTextAlignment(Qt::AlignHCenter);
+ itemButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
+}
+
+void MainDialog::changePage(QListWidgetItem *current, QListWidgetItem *previous)
+{
+ if (!current)
+ current = previous;
+
+ m_pDevicestackedWidget->setCurrentIndex(m_pDeviceListWidget->row(current));
+}
+
+void MainDialog::closeEvent(QCloseEvent *event)
+{
+ // Save the window state
+ saveWindowState();
+ QMainWindow::closeEvent(event);
+}
+
+void MainDialog::saveWindowState()
+{
+ QSettings settings("HJ-NET", "EMSCFG");
+ settings.setValue("geometry", saveGeometry());
+ settings.setValue("windowState", saveState());
+}
+
+void MainDialog::loadWindowState()
+{
+ QSettings settings("HJ-NET", "EMSCFG");
+ restoreGeometry(settings.value("geometry").toByteArray());
+ restoreState(settings.value("windowState").toByteArray());
+}
+
+void MainDialog::onToolButton1Clicked()
+{
+ QMessageBox::information(this, "Button Clicked", "Button 1 was clicked!");
+}
+
+void MainDialog::onToolButton2Clicked()
+{
+ QMessageBox::information(this, "Button Clicked", "Button 2 was clicked!");
+}
+
+void MainDialog::onAboutButtonClicked()
+{
+ QMessageBox::information(this, "Button Clicked", "About");
+}
+
diff --git a/applications/emsConfigurer/maindialog.h b/applications/emsConfigurer/maindialog.h
index b969429..21b0f9c 100644
--- a/applications/emsConfigurer/maindialog.h
+++ b/applications/emsConfigurer/maindialog.h
@@ -1,13 +1,19 @@
-#ifndef MAINDIALOG_H
+#ifndef MAINDIALOG_H
#define MAINDIALOG_H
-#include
+#include
+#include
+#include
+#include
+#include
+#include
namespace Ui {
class MainDialog;
}
-class MainDialog : public QDialog
+
+class MainDialog : public QMainWindow
{
Q_OBJECT
@@ -15,8 +21,31 @@ public:
explicit MainDialog(QWidget *parent = nullptr);
~MainDialog();
+public slots:
+ void changePage(QListWidgetItem *current, QListWidgetItem *previous);
+
+
+private slots:
+ void onToolButton1Clicked();
+ void onToolButton2Clicked();
+ void onAboutButtonClicked();
+
private:
Ui::MainDialog *ui;
+ QListWidget *m_pDeviceListWidget;
+ QStackedWidget *m_pDevicestackedWidget;
+ QToolBar *m_pMainToolBar;
+
+private:
+ void InitializeUI();
+ void CreateToolbar();
+ void CreateIcon(const QIcon& icon,QString text);
+ void CreateTablePage();
+
+protected:
+ void closeEvent(QCloseEvent *event) override;
+ void saveWindowState();
+ void loadWindowState();
};
#endif // MAINDIALOG_H
diff --git a/applications/emsConfigurer/maindialog.ui b/applications/emsConfigurer/maindialog.ui
index 0a83fd3..d779f0c 100644
--- a/applications/emsConfigurer/maindialog.ui
+++ b/applications/emsConfigurer/maindialog.ui
@@ -2,6 +2,9 @@
MainDialog
+
+ Qt::NonModal
+
0
@@ -10,6 +13,9 @@
665
+
+ Qt::NoContextMenu
+
Dialog