Qt Creator 使用过程中的一些技巧&注意事项

1.将构建目录设置成项目文件夹,而不是在项目文件夹外。可以避免(将概率降低到趋近于零)随机出现的构建失败(例如nikka 的 subcommand 出错)。

2.用图形化界面来创建ui的时候。如果要让一个widget中的控件随这个widget的尺寸变化自动适应位置和尺寸。可以直接在预览窗口点击那个widget(注意不是右边那个树形列表),然后Creator上面那栏中的按钮就会变成可点击,我们可以根据需要设置想要的layout。

3.如果发现某个控件的大小总是不能铺满理想中的区域。可能是旁边的控件占用面积的大小限制了它的尺寸(因为会自动对齐各个控件),可以用弹簧把旁边的控件的控件拉大。

4.如果使用“提升到”功能,在编译的时候提示“ui_xxx.h”找不到自己提升到的类的头文件。可以把自己的头文件按照现有的目录结构复制到“cryo_EM_autogen\include”下面。例如继承自“QWeight”的类“MyWeight”(位于“项目根目录\lib\myweight.h”),我们将“lib”文件夹直接复制到“cryo_EM_autogen\include”中然后再编译即可(不过如果修改了文件还要再重新复制一次)。其实更方便的做法是创建符号链接,例如使用这个命令(需要以管理员身份运行)

mklink /d "E:\Temp\Qt-dev\build-cryo_EM-Desktop_Qt_6_5_0_MinGW_64_bit-Debug\cryo_EM_autogen\include\lib" "E:\Temp\Qt-dev\cryo_EM\lib"

不过前面这两个方法在执行cmake的clean之后都要重新做一遍。最好的方法是修改cmakelist,等我过一段时间有空了再更新这个方法。

5.使用“提升到”功能的时候,要提升的qt类必须是你自己定义的那个类的基类。比如你拖了一个QWeight到界面中,你只能将它提升到自己写的继承自QWeight的MyWeight,而不能将一个QGraphicsView组件提升到你写的这个MyWeight。

6.关于“qtcreator_ctrlc_stub: Command line failed”这个错误,其实用命令行手动进行编译和运行就好了。似乎是qtcreator_ctrlc_stub创建进程失败就会出现这个报错。刚重启完操作系统那会基本不会遇到这个错误,但是随着系统运行时间变长,这个错误的出现概率就会大大增加。最后会出现连续点几十下“构建”或者“运行”都是这个错误,大大影响了开发效率以及开发人员的心态 😦

#报错信息长这样
16:08:26: 为项目myOpenGL5执行步骤 ...
16:08:26: 正在启动 "D:\Qt\Tools\CMake_64\bin\cmake.exe" --build E:/Temp/Qt-dev/build-myOpenGL5-Desktop_Qt_6_5_0_MinGW_64_bit-Debug --target all

qtcreator_ctrlc_stub: Command line failed: D:\Qt\Tools\CMake_64\bin\cmake.exe --build E:/Temp/Qt-dev/build-myOpenGL5-Desktop_Qt_6_5_0_MinGW_64_bit-Debug --target all
16:08:27: 进程"D:\Qt\Tools\CMake_64\bin\cmake.exe"退出,退出代码 -1 。
Error while building/deploying project myOpenGL5 (kit: Desktop Qt 6.5.0 MinGW 64-bit)
When executing step "构建"
16:08:27: Elapsed time: 00:01.
#解决方法

#复制可能要用的头文件等文件(这里的命令都是Windows下的,如果是Linux或者其他系统请自行更改)(注意,如果使用这个命令手动复制文件,最好不要再使用前面提到的“创建符号链接”了。因为会报错“共享冲突”要删除创建的符号链接才能正常复制)
xcopy E:\Temp\Qt-dev\myOpenGL5 E:\Temp\Qt-dev\build-myOpenGL5-Desktop_Qt_6_5_0_MinGW_64_bit-Debug\myOpenGL5_autogen\include /Y /S

#调用cmake进行构建
D:\Qt\Tools\CMake_64\bin\cmake.exe --build E:/Temp/Qt-dev/build-myOpenGL5-Desktop_Qt_6_5_0_MinGW_64_bit-Debug --target all

#运行构建出来的Qt应用程序
cd E:\Temp\Qt-dev\build-myOpenGL5-Desktop_Qt_6_5_0_MinGW_64_bit-Debug && E: && E:\Temp\Qt-dev\build-myOpenGL5-Desktop_Qt_6_5_0_MinGW_64_bit-Debug\myOpenGL5.exe

7.在6中我们通过手动执行命令来绕过“qtcreator_ctrlc_stub”导致的问题。但是我们看不到程序运行过程中的调试信息了。例如qDebug等等。我们可以在CMakeLists.txt中找到“WIN32_EXECUTABLE TRUE”这行,在它开头加上井号“#”将它注释掉。变成“#WIN32_EXECUTABLE TRUE”。然后就没问题了。。接下来在cmd中运行编译后的程序即可在cmd中看到输出。完成程序的最后测试之后记得要取消掉这个注释。