Featured image of post 【Qt 配置】工程结构调整

【Qt 配置】工程结构调整

Qt 基础介绍

|
372 字
|

由于插件 Qt Configure 帮我们创建的文件全都丢在 src 文件夹下,这时如果创建多个窗口类,工程结构就显得复杂。所以本次博客帮助大家完善一下工程结构。

特别鸣谢小伙伴 YusJade 帮我解决结构调整带来的问题。
博客链接:CMake + Qt 无法编译.ui 文件的解决办法

Qt 项目工程结构调整

工程结构

将头文件,源文件和ui文件分别放到对应文件夹:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
├── include
│   ├── dialog.h
│   ├── mainwindow.h
│   └── widget.h
├── src
│   ├── dialog.cpp
│   ├── main.cpp
│   ├── mainwindow.cpp
│   └── widget.cpp
├── ui
│   ├── dialog.ui
│   ├── mainwindow.ui
│   └── widget.ui

CMakeLists.txt 文件

 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
cmake_minimum_required(VERSION 3.20) # CMake install : https://cmake.org/download/
project(mainwindow LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_PREFIX_PATH "/usr/local/Qt/Qt6.5.3/6.5.3/gcc_64") # Qt Kit Dir
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt6 COMPONENTS Widgets REQUIRED) # Qt COMPONENTS
# aux_source_directory(./src srcs)

set(SOURCE 
    ${CMAKE_SOURCE_DIR}/src/main.cpp 
    ${CMAKE_SOURCE_DIR}/src/mainwindow.cpp 
    ${CMAKE_SOURCE_DIR}/src/widget.cpp 
    ${CMAKE_SOURCE_DIR}/src/dialog.cpp
)

set(INCLUDE 
    ${CMAKE_SOURCE_DIR}/include/dialog.h 
    ${CMAKE_SOURCE_DIR}/include/mainwindow.h 
    ${CMAKE_SOURCE_DIR}/include/widget.h
)

set(CMAKE_AUTOUIC_SEARCH_PATHS ${CMAKE_SOURCE_DIR}/ui) # 需要添加这个
set(UI_FILES
    ${CMAKE_SOURCE_DIR}/ui/dialog.ui
    ${CMAKE_SOURCE_DIR}/ui/mainwindow.ui
    ${CMAKE_SOURCE_DIR}/ui/widget.ui
)

add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")

add_executable(${PROJECT_NAME}
    WIN32 
    ${SOURCE}
    ${INCLUDE} # 需要把包含了 ui 文件的头文件加进来
    ${UI_FILES}
)

target_include_directories(${PROJECT_NAME} PRIVATE 
    ${CMAKE_SOURCE_DIR}/include
)
target_link_libraries(${PROJECT_NAME} PRIVATE Qt6::Widgets) # Qt5 Shared Library
使用 Hugo 构建
主题 StackJimmy 设计