xuqiang 5 kuukautta sitten
vanhempi
sitoutus
0e607e7ba5
4 muutettua tiedostoa jossa 165 lisäystä ja 0 poistoa
  1. 96 0
      CMakeLists.txt
  2. 20 0
      include/mainwindow.h
  3. 22 0
      src/main.cpp
  4. 27 0
      src/mainwindow.cpp

+ 96 - 0
CMakeLists.txt

@@ -0,0 +1,96 @@
+cmake_minimum_required(VERSION 3.20)
+
+# 工具链路径(用于交叉编译)
+set(TOOLCHAIN_PATH /opt/arm-gnu-toolchain-11.3.rel1-x86_64-aarch64-none-linux-gnu/bin)
+
+set(CMAKE_SYSTEM_NAME Linux)     # 设置目标系统名字
+set(CMAKE_SYSTEM_PROCESSOR aarch64)  # 设置目标处理器架构
+# set(CMAKE_SYSROOT /opt/poky/1.4.1/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi) # 设置 sysroot
+
+# 设置交叉编译器
+set(CMAKE_C_COMPILER ${TOOLCHAIN_PATH}/aarch64-none-linux-gnu-gcc)
+set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PATH}/aarch64-none-linux-gnu-g++)
+set(CMAKE_AR ${TOOLCHAIN_PATH}/aarch64-none-linux-gnu-ar)
+set(CMAKE_LINKER ${TOOLCHAIN_PATH}/aarch64-none-linux-gnu-ld)
+set(CMAKE_STRIP ${TOOLCHAIN_PATH}/aarch64-none-linux-gnu-strip)
+
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
+
+project(monitor VERSION 1.0.0 LANGUAGES CXX C)
+
+set(CMAKE_AUTOUIC ON)
+set(CMAKE_AUTOMOC ON)
+set(CMAKE_AUTORCC ON)
+
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+set(CMAKE_BUILD_TYPE "Release")
+
+message(STATUS ${CMAKE_C_COMPILER})
+message(STATUS ${CMAKE_CXX_COMPILER})
+message(STATUS ${CMAKE_AR})
+message(STATUS ${CMAKE_LINKER})
+message(STATUS ${CMAKE_STRIP})
+
+# 设置自定义 Qt 路径
+set(QT5_DIR "/opt/qt/qt5.12.12")
+set(CMAKE_PREFIX_PATH 
+    ${QT5_DIR}/lib/cmake
+)
+
+find_package(Qt5 REQUIRED COMPONENTS Widgets UiPlugin)
+
+set(PROJECT_SOURCE_DIR_LIST
+    ${CMAKE_CURRENT_SOURCE_DIR}/include
+    ${CMAKE_CURRENT_SOURCE_DIR}/src
+)
+
+foreach(item ${PROJECT_SOURCE_DIR_LIST})
+    string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/" "" SOURCE_DIR ${item})
+    message("--------${SOURCE_DIR}--------")
+    if("${item}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
+        file(GLOB HEADERS CONFIGURE_DEPENDS ${item}/*.h ${item}/*.hpp)
+    else()
+        file(GLOB_RECURSE HEADERS CONFIGURE_DEPENDS ${item}/*.h ${item}/*.hpp)
+    endif()
+    foreach(item ${HEADERS})
+        string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/" "" HEADER_FILE ${item})
+        message(STATUS ${HEADER_FILE})
+        list(APPEND PROJECT_HEADERS ${HEADER_FILE})
+    endforeach()
+
+    if("${item}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
+        file(GLOB SOURCES CONFIGURE_DEPENDS ${item}/*.c ${item}/*.cpp ${item}/*.cc)
+    else()
+        file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS ${item}/*.c ${item}/*.cpp ${item}/*.cc)
+    endif()
+    foreach(item ${SOURCES})
+        string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/" "" SOURCE_FILE ${item})
+        message(STATUS ${SOURCE_FILE})
+        list(APPEND PROJECT_SOURCES ${SOURCE_FILE})
+    endforeach()
+endforeach()
+
+add_executable(${PROJECT_NAME}
+    ${PROJECT_HEADERS}
+    ${PROJECT_SOURCES}
+)
+
+target_include_directories(${PROJECT_NAME}
+    PRIVATE
+    ${CMAKE_CURRENT_SOURCE_DIR}/include
+)
+
+set_target_properties(${PROJECT_NAME} PROPERTIES
+    RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/output/bin
+)
+
+target_link_libraries(${PROJECT_NAME}
+    PRIVATE
+    Qt5::Widgets
+    Qt5::UiPlugin
+)

+ 20 - 0
include/mainwindow.h

@@ -0,0 +1,20 @@
+#include <QMainWindow>
+#include <QStackedWidget>
+
+#define MAX_CANVAS_COUNT 12
+
+class MainWindow : public QMainWindow
+{
+    Q_OBJECT
+
+public:
+    explicit MainWindow(QWidget *parent = nullptr);
+    ~MainWindow();
+
+protected:
+    void init_ui();
+
+private:
+    QStackedWidget *m_pStackedWidget;
+    
+};

+ 22 - 0
src/main.cpp

@@ -0,0 +1,22 @@
+#include <QApplication>
+#include "mainwindow.h"
+
+#define SCREEN_WIDTH    1280
+#define SCREEN_HEIGHT   720
+
+int main(int argc, char *argv[])
+{
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
+    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
+#endif
+    QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
+
+    QApplication app(argc, argv);
+
+    MainWindow w;
+    w.resize(SCREEN_WIDTH, SCREEN_HEIGHT);
+    w.showFullScreen();
+
+    int ret = app.exec();
+    return ret;
+}

+ 27 - 0
src/mainwindow.cpp

@@ -0,0 +1,27 @@
+#include "mainwindow.h"
+#include <QVBoxLayout>
+#include <QDir>
+
+MainWindow::MainWindow(QWidget *parent)
+    : QMainWindow(parent)
+    , m_pStackedWidget(nullptr)
+{
+    setWindowFlags(Qt::FramelessWindowHint | Qt::Window);
+    init_ui();
+}
+
+MainWindow::~MainWindow()
+{
+
+}
+
+void MainWindow::init_ui()
+{
+    QWidget *pCentralWidget = new QWidget(this);
+    setCentralWidget(pCentralWidget);
+    QVBoxLayout *pMainLayout = new QVBoxLayout(pCentralWidget);
+    m_pStackedWidget = new QStackedWidget(pCentralWidget);
+    pMainLayout->addWidget(m_pStackedWidget);
+    pMainLayout->setSpacing(0);
+    pMainLayout->setContentsMargins(0, 0, 0, 0);
+}