本人环境:
操作系统: windows11
qt版本: qt5/qt6
clion版本 2021.3
该cmake文件可以实现 多个资源文件在不同子目录的编译,详细见 CMakeLists.txt.
QT creator 实在不好用,CLion配合cmake完美代替 ta 。C++ 多个源码文件挤在一起不好看,很乱。通过cmake可以完美解决这一个痛点,如:
完整项目参考:https://gitee.com/yuexingqin/ysMusic
Qt/x.xx/mingwXX/
加入环境变量即可,就无需设置了,例如本人的 D:\Software\SDK\Qt\5.15.2\mingw81_64
针对windows 平台复制 dll 到 build 目录下
cmake 这一段其实也不需要,将 Qt/x.xx/mingwXX/bin
加入环境变量即可,例如:D:\Software\SDK\Qt\5.15.2\mingw81_64\bin
大伙可以参考我的
根据我长时间的使用,这个模板还是不好用!!!所以还是改进了一些。
CMAKE_AUTOUIC
, 他在build/xxx_include 目录下 自动编译了 ui文件。但是如果我们提升了某一个widget,那么如果使用相对路径引入头文件会很麻烦,这里解决办法是 将他添加到include。这样少了一个文件 舒服一点添加的新的文件 请重新加载一下cmake
安装需要qt版本,特别注意需要选择安装额外的minGW 编译器,本模板无法支持 msvc编译器
这里安装你对应的 minGW 即可
git clone https://gitee.com/yuexingqin/template_qtclion.git
下载到本地,删除 .git 文件,使用Clion 打开本项目 ,进行下文配置
设置qt mingw 目录即可,clion会自动检索
cmake 添加cmake以及release 模式
UIC 工具无需添加
添加界面设计工具,他们的路径一般在你的qt安装目录下的:安装目录\x.x.x\mingw_xxx\bin\xxx.xx
,详细设置 看下文
作用:设计界面
设置如下:
实参:$FileName$
工作目录:$FileDir$
在src的某个子目录 添加ui类
右键ui文件 选择 External Tools -> designer
就可以设计界面了,每次设计完成需要手动 uic 编译一下 ui文件,和designer操作方法一样
你至少需要了解或修改下面罗列的项目。
# 这里修改为你的项目名称
project(template_qt)
(注意 该项目无需设置了 将下面路径加入环境变量即可)
# 这里修改为 你的qt 路径
set(CMAKE_PREFIX_PATH "D:/Software/SDK/Qt/6.2.3/mingw_64")
注意是 这里要填写 为你qt安装目录对于版本下的mingw,而不是 tool/bin/下的mingw64
# 设置qt版本号 如 5 or 6
set(QTVersion 5)
# 这里修改为你的qt版本
# 同时添加你的需要的qt依赖
find_package(Qt6
COMPONENTS
Core
Gui
Widgets
REQUIRED
)
这里会让cmake寻找对应的dll并且复制到 输出目录中。
cmake 使用 file命令已经帮你找出了 src所有的资源文件,但是 类似与 qrc的资源文件需要你手动添加一下,
#添加额外的 源文件 例如资源文件等
LIST(APPEND SRCS res.qrc)
ui.h 头文件已经添加到include中,但是如果你提升了一个widget,那么提升的这个类的头文件需要你手动添加一下。
# 这里添加 头文件目录
include_directories(src/subWidget)
当然你有其他头文件,也是可以添加到这后面的
# 添加你需要连接的库
target_link_libraries(${PROJECT_NAME}
Qt::Core
Qt::Gui
Qt::Widgets
)
MainWindow 类需要在这个后面 添加行代码
<property name="windowTitle">
<string>test</string>
</property>
加载后面就好了
<widget class="QWidget" name="centralwidget"></widget>
当作源文件添加到 SRCS
中即可
windeployqt xx.exe
导出 所需要依赖此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。