文章目录
- 一、Win11 CLion Qt需要的环境
- 二、环境说明
- 三、Win11 CLion Qt 开发步骤
- 四、CLion Qt CMake脚本相关配置
- 4.1 在CLion里如何使用资源文件.qrc
- 4.2 Qt6 cmake如何添加ts翻译文件
- 五、程序打包
本篇博客介绍在Win11上使用CLion来编写Qt QWidget项目。
视频讲解:https://www.bilibili.com/video/BV1cHDKYDE4D/?vd_source=dddbd48a76f0f870e223c6781ad043ab
一、Win11 CLion Qt需要的环境
(1) 安装VS2022, 勾选C++开发相关模块;
(2) 安装Qt6版本,尽量LTS版本,例如Qt6.5, Qt6.8, 本篇博客安装的是Qt6.5.3, 如果想安装Qt5.15.2也可以勾选上;关于VS Qt开发环境的安装可以看我这篇博客:
https://mingshiqiang.blog.csdn.net/article/details/108015209
按最新的VS2022 + Qt6.5.3,如果需要Qt5,也可以安装Qt5.15.2。
(3) 安装CLion, 下载链接:
https://www.jetbrains.com/clion/download/#section=windows
二、环境说明
Qt6以上版本,官方推荐使用CMake构建,其实用qmake也没啥问题。CLion C++程序是用CMake构建,本篇博客介绍CLion Qt6 cmake构建方式。
CLion安装后的默认C++编译器是MinGW,如果安装了VS,那么会有两个环境,建议在win11上使用VS C++环境。本篇博客介绍在Win11上使用CLion来编写Qt QWidget项目,由于Qt也分为MinGW和msvc,为了统一CLion和Qt的环境,在安装Qt时也选择msvc, 因为在windows上写C++客户端,难免需要和windows系统打交道,可能需要使用Windows C API, 因此在windows上使用msvc C/C++环境是比较好的选择。
三、Win11 CLion Qt 开发步骤
(1)先创建一个C++项目,点开设置,将vs开发环境移到最前面, 也就是把VS设置为CLion的默认C/C++编译环境。
(2)创建Qt Widget项目,选择Qt路径和版本
项目创建之后稍等CLion加载项目文件,然后运行项目。
默认是创建了一个按钮并显示。可以添加C++类或者Qt界面类,如下图添加Qt界面类:
写类名字,并添加到cmake脚本里,如下图:
新添加的Qt界面类会产生.h .cpp和.ui文件,ui文件可以双击直接打开,拖拽控件到界面上,然后保存,运行项目即可。
启动新建的MainWindow, 代码如下:
int main(int argc, char* argv[])
{
QApplication a(argc, argv);
// QPushButton button("Hello world!", nullptr);
// button.resize(200, 100);
// button.show();
QTranslator ts;
ts.load(":/untitled_zh_CN.qm");
a.installTranslator(&ts);
MainWindow w;
w.show();
return QApplication::exec();
}
四、CLion Qt CMake脚本相关配置
4.1 在CLion里如何使用资源文件.qrc
CLion没有QtCreator直接添加qrc文件这种方式,可以手动使用CLion新建qrc文件,例如取名为qrc.qrc, .qrc文件一般写法如下:
<RCC>
<qresource prefix="/">
<file>Resources/Images/home.png</file>
<file>Resources/Images/trans.png</file>
<file>Resources/Images/wordbook.png</file>
</qresource>
</RCC>
然后再cmake脚本里添加qrc文件
add_executable(qt_demo01 main.cpp
qrc.qrc
mainwindow.cpp
mainwindow.h
mainwindow.ui)
使用qrc里的图片给按钮设置背景图片,代码如下:
QString qss01 = R"(
QPushButton {
background-image: url(":/Resources/Images/home.png");
background-repeat: no-repeat;
background-position: center;
border: none; /* 去掉按钮边框 */
color: white; /* 如果需要,可以设置按钮文字颜色 */
padding: 10px; /* 如果需要,可以设置按钮内边距 */
}
QPushButton:hover {
background-image: url(":/Resources/Images/home.png"); /* 鼠标悬停时的背景图片 */
}
QPushButton:pressed {
background-image: url(":/Resources/Images/home.png"); /* 按下按钮时的背景图片 */
}
)";
ui->pushButton->setText("");
ui->pushButton->setStyleSheet(qss01);
4.2 Qt6 cmake如何添加ts翻译文件
CLion也没有类似QtCreator的新建添加ts文件的方法,可以手动创建ts文件,然后添加到cmake脚本里,ts文件的一般格式:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_CN"></TS>
注意这里的语言的中文zh_CN,如果是其它语言language的值不同,可以去QtCreator里创建然后抄过来。
在CLion cmake脚本里添加如下命令,把手动添加的ts文件加进来:
# 添加ts文件后新增的
find_package(Qt6 REQUIRED COMPONENTS LinguistTools)
。。。
# 添加ts文件
qt_add_translations(qt_demo01 TS_FILES untitled_zh_CN.ts)
去build目录执行如下命令更新ts文件:
cmake --build . --target update_translations
然后使用qt语言专家生成qm文件,将qm文件添加到qrc里,或者放在exe某个路径,进行加载,例如我放到qrc文件里。
<RCC>
<qresource prefix="/">
<file>Resources/Images/home.png</file>
<file>Resources/Images/trans.png</file>
<file>Resources/Images/wordbook.png</file>
<file>untitled_zh_CN.qm</file>
</qresource>
</RCC>
加载翻译后的qm文件
QTranslator ts;
ts.load(":/untitled_zh_CN.qm");
a.installTranslator(&ts);
五、程序打包
CLion编译程序后会生成exe, 然后使用windeployqt6程序提取依赖库,使用打包工具打包即可,例如Inno Setup、NSIS等等。
总的来说,使用在Wind11上使用CLion开发问题不大,和VS + qt vsaddin相比,CLion Qt的配置构建相对麻烦,因为很多Qt的模块都需要手动添加,例如上面的qrc、ts文件,不过解决这些问题后,CLion Qt开发也是一种很不错的方式。