diff --git a/.vscode/settings.json b/.vscode/settings.json index 1722855..5edd88f 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -110,7 +110,8 @@ "xstring": "cpp", "xtr1common": "cpp", "xtree": "cpp", - "xutility": "cpp" + "xutility": "cpp", + "qformlayout": "cpp" }, "files.autoGuessEncoding": false, } \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 3081bd0..041ad98 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,7 +30,7 @@ file(GLOB_RECURSE APPSRC # src/*.h # src/*.hpp # ) - + set(PROJECT_SOURCES ${APPSRC} app.rc diff --git a/src/app/main.cpp b/src/app/main.cpp index 7314ebd..b17e1af 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -18,9 +18,12 @@ #include #include +#include "zqui/appmgr/appmgr.hpp" #include "zqui/mainpage/mainwindow.h" #include "zqui/zqui.hpp" // +#include "app/syncbox16ch/syncbox16ch.h" +// #include // #include @@ -29,11 +32,13 @@ using namespace std; QT_CHARTS_USE_NAMESPACE -int main(int argc, char *argv[]) { +int main(int argc, char* argv[]) { WSADATA wsaData; WSAStartup(MAKEWORD(2, 2), &wsaData); QApplication a(argc, argv); + + AppMgr::ins()->regAppBuilder([](QWidget* p) { return new syncbox16ch(p); }); ZQUI::ins()->initialize(); return a.exec(); } diff --git a/src/app/syncbox16ch/syncbox16ch.h b/src/app/syncbox16ch/syncbox16ch.h index b9380a7..b47a3d9 100644 --- a/src/app/syncbox16ch/syncbox16ch.h +++ b/src/app/syncbox16ch/syncbox16ch.h @@ -7,16 +7,15 @@ namespace Ui { class syncbox16ch; } -class syncbox16ch : public QWidget -{ - Q_OBJECT +class syncbox16ch : public QWidget { + Q_OBJECT -public: - explicit syncbox16ch(QWidget *parent = nullptr); - ~syncbox16ch(); + public: + explicit syncbox16ch(QWidget *parent = nullptr); + ~syncbox16ch(); -private: - Ui::syncbox16ch *ui; + private: + Ui::syncbox16ch *ui; }; -#endif // SYNCBOX16CH_H +#endif // SYNCBOX16CH_H diff --git a/src/zqui/appmgr/appmgr.cpp b/src/zqui/appmgr/appmgr.cpp new file mode 100644 index 0000000..e69de29 diff --git a/src/zqui/appmgr/appmgr.hpp b/src/zqui/appmgr/appmgr.hpp new file mode 100644 index 0000000..dc2b35a --- /dev/null +++ b/src/zqui/appmgr/appmgr.hpp @@ -0,0 +1,54 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +// + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +typedef std::function appbuilder_fn_t; + +class AppMgr { + public: + appbuilder_fn_t appBuilder; + + public: + static AppMgr *ins() { + static AppMgr instance; + return &instance; + } + + void regAppBuilder(appbuilder_fn_t builder) { appBuilder = builder; } + QWidget *buildApp(QWidget *parent) { + if (appBuilder) return appBuilder(parent); + return nullptr; + } +}; diff --git a/src/zqui/mainpage/mainwindow.cpp b/src/zqui/mainpage/mainwindow.cpp index a2c1c73..9cffaf0 100644 --- a/src/zqui/mainpage/mainwindow.cpp +++ b/src/zqui/mainpage/mainwindow.cpp @@ -10,6 +10,7 @@ #include "zqui/base/QFunction.hpp" #include "zqui/channelmgr/channelmgr.hpp" // +#include "zqui/appmgr/appmgr.hpp" #include "zqui/zqui.hpp" // #include "app/syncbox16ch.h" // #include "version.h" @@ -21,6 +22,9 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi buildUI(); ui->serialPortCB->installEventFilter(this); startTimer(1000); + + QWidget *app = AppMgr::ins()->buildApp(ui->app_content); + if (app) app->show(); } void MainWindow::buildUI() {