由于插件 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
|