Clion配置Qt开发环境
配置CMAKE和ToolChain
新建项目,Qt Widgets Executable,配置CMake prefix path,本人环境如下所示。
配置ToolChain,Settings。
将Qt的MinGW置顶,表示使用Qt的MinGW编译
运行程序测试。
配置.ui文件
默认情况下,CMakeLists.txt中,配置了自动处理ui文件和qrc文件。
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
新建文件,Qt UI Class
此时项目目录如下所示
运行程序,uic程序会解析ui文件,生成ui_widget.h文件,红色波浪线消失。
在windows中配置.ui文件的默认应用程序为Qt安装目录下Tools下的Qt Designer,在Clion中双击.ui文件,会自动打开Qt Designer,添加一个按钮后保存,修改main函数代码,测试效果。(ui文件变化后需要重新build)。
配置.qrc文件
新建文件res.qrc,并在CMakeLists.txt中添加。
add_executable(clion_demo main.cpp
widget.cpp
widget.h
widget.ui
res.qrc)
默认情况下Clion以xml文件方式打开qrc文件,其实qrc文件的编辑比较简单,以xml方式手动编译亦无不可。当然也可以配置Clion以Windows默认应用程序打开qrc文件,然后设置qrc文件以Qt Creator打开即可,关于如何修改JetBrains工具的文件打开方式。
默认情况下,qrc文件内容为空,qtcreator读取时会报错,新的qrc文件应有一对空的RCC标签,在File and Code Templates中添加qrc文件的模板。如下图所示。
编辑完res.qrc并保存,打开Qt Designer,添加资源文件,选择当前目录下的res.qrc,修改按钮图标。
保存后重新运行程序。
解决组件样式古老问题
使用Clion跑出来的界面和Qt Creator中不一样,前者还是老式风格,原因在于CLion没有添加qwindowsvistastyle.dll文件,在CMakeLists.txt中加入即可。
if (EXISTS "${QT_INSTALL_PATH}/plugins/styles/qwindowsvistastyle${DEBUG_SUFFIX}.dll")
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory
"$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/styles/")
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
"${QT_INSTALL_PATH}/plugins/styles/qwindowsvistastyle${DEBUG_SUFFIX}.dll"
"$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/styles/")
endif ()
解决图片无法显示问题
开发过程中发现同样的代码ico图标在qtcreator中正常显示,Clion中无法显示,编译过程显示UIC、RCC均正常,最后发现是缺少了处理图片的动态库,如下所示。
cmake中将以上动态库全部复制过来即可。
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory
"$<TARGET_FILE_DIR:${PROJECT_NAME}>/imageformats/")
# qgif qico qjpeg qsvg
FILE(GLOB IMAGE_DLLS "${QT_INSTALL_PATH}/plugins/imageformats/*${DEBUG_SUFFIX}.dll")
foreach (IMAGE_DLL ${IMAGE_DLLS})
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
"${IMAGE_DLL}"
"$<TARGET_FILE_DIR:${PROJECT_NAME}>/imageformats/")
endforeach (IMAGE_DLL)
CMakeLists.txt一次配置,永久生效
避免每个项目都要额外手动添加两段CMake代码,可以在File and Code Templates中直接修改模板。