QT使用小结
1. 在QT中使用std::cout
在QT中如果要在控制台输出信息,一般是使用qDebug(),如果要使用C++中的std::cout该怎么办呢?
在QT5.12下,是可以直接使用std::cout的,但是并不会马上输出,会等到缓存区满了才输出,或者每次输出都输出一个换行endl。
2. 引入第三方库
QT作为一个UI开发工具,通常需要与第三方工具相结合一起进行开发,比如VTK、ITK等。在vscode中,可以通过配置来引入第三方的*.lib,include等文件,那么在QT中怎么引入呢?
在QT5.12下,其中一种方法是这样的。可以直接配置QT项目的.pro文件,在文件中增加相关的内容,例如要引入VTK。那么在.pro文件中增加以下内容:
INCLUDEPATH += xxx/include/vtk-9.0
LIBS += $$quote(xxx/lib/*.lib)
3. 格式化字符串
之前一直用的是python,里面的字符串格式化特别方便。切换到了C++,可能是不太熟的原因,格式化字符串成了我心头的痛💔。经过搜索后,发现有以下方法挺不错的:
- QString().arg()
- QString().Sprintf()
这里举几个简单的例子:
- 关于QString().arg()的例子可以参考:QT学习之QString的arg方法
- 关于QString().Sprintf()的例子
QString().Sprintf("[%d, %d, %d]", 1, 2, 3);
QString().Sprintf("%s %s!", "Hello", "QT");
熟悉printf的同学估计会首选QString().Sprintf()😄
4. ITK与VTK的混合使用
从源码开始编译ITK时,记得勾选Module_ITKVTKGlue
5. C2001: 常量中有换行符
这个问题通常是由在代码中含有中文字符串且使用的C++编译器是MSVC造成的。几个解决方法:
- 在含有中文的字符串末尾增加一个空格,或者英文符号
- 修改文件编码:编辑 > select encoding,选择system
- 使用英文
 更详细可参考:Qt Creator编译,存在中文导致错误: error: C2001: 常量中有换行符
6. moveToThread
QT中如果使用多线程,其中一种方式是将完成任务的对象移动到子线程上去,有时候对先把任务完成后需要移回到主线程,如果直接在主线程中使用moveToThread(mainThread),这样是不可行的,不可将其他线程的对象拉到本线程,因此需要在子线程中将对象推到主线程。

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号