Qt教程 笔记1

489 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

​  Qt教程  (c.biancheng.net/qt/)

  1. 安装QT 配置环境变量
    右键[我的电脑]/[属性]/[高级系统设置]/[高级]/[环境变量]/[系统变量]/选[Path]/[编辑]
    添加如下内容
    C:\Qt\Qt5.9.8\5.9.8\mingw53_32\bin;
    C:\Qt\Qt5.9.8\5.9.8\msvc2013_64;

2. 工程路径不能包含中文,否则如下错误提示 

    Cannot find file: E:\Users\Administrator\Qt_Project**Qt5 范例开发大全**\QtWindowsTest\QtWindowsTest.pro.
18:01:13: 进程"C:\Qt\Qt5.9.8\5.9.8\msvc2013_64\bin\qmake.exe"退出,退出代码 2 。
Error while building/deploying project QtWindowsTest (kit: Desktop Qt 5.9.8 MSVC2013 64bit)
The kit Desktop Qt 5.9.8 MSVC2013 64bit has configuration issues which might be the root cause for this problem.
When executing step "qmake"

3.  E:\Users\Administrator\Qt_Project\QIteratorTest\main.cpp:16: error: calling 'debug' with incomplete return type 'QDebug'
qDebug()<<i.next();

     解决办法: #include

  1. jom: E:\Users\Administrator\Qt_Project\build-QIteratorTest-Desktop_Qt_5_9_8_MinGW_32bit-Debug\Makefile.Debug [debug\QIteratorTest.exe] Error 1120
    jom: E:\Users\Administrator\Qt_Project\build-QIteratorTest-Desktop_Qt_5_9_8_MinGW_32bit-Debug\Makefile [debug] Error 2
    11:14:32: 进程"C:\Qt\Qt5.9.8\Tools\QtCreator\bin\jom.exe"退出,退出代码 2 。
    Error while building/deploying project QIteratorTest (kit: Desktop Qt 5.9.8 MinGW 32bit)
    The kit Desktop Qt 5.9.8 MinGW 32bit has configuration issues which might be the root cause for this problem.
    When executing step "Make"
    11:14:32: Elapsed time: 00:04.

    解决方法:
    工具->选项->构建与运行

    把使用jom代替nmake的勾选取消即可运行。(后面把勾选打回去也还是可以运行,但是新开项目就得重新取消了)

    简而言之jom是用来支持多线程的,make在linux下本身也可以开多线程,但在windows下的nmake因为某些原因支持不是很好。

5.  在对一个QT项目添加一个类并使用的过程中,常常可能会产生无法解析的外部符号问题,形式常见的例如:

    mainwndcustomdlg.obj:-1: error: LNK2019: 无法解析的外部符号 "public: void __cdecl QWDialogLocate::setSpinRange(int,int)" (?setSpinRange@QWDialogLocate@@QEAAXHH@Z),该符号在函数 "private: void __cdecl              

    MainWndCustomDlg::on_actPosition_triggered(void)" (?on_actPosition_triggered@MainWndCustomDlg@@AEAAXXZ) 中被引用

    产生这种问题的原因是函数名称无法识别。

    首先,检查函数的定义有没有问题,是否存在定义的函数方法名和调用的不一致现象,如漏了一个字母或打错字母等情况,
或者函数只有声明没有实现,这样编译器自然无法找到对应方法的实现;

    若不存在问题,则可能是函数名字在解析时发生了改变,使得编译器无法解析了。这时可以尝试下面的方法:

    1)  把之前编译产生的文件夹中的Debug和Release文件夹删除
2)  在QT中进行qmake,然后重新编译

    通常,无法解析的外部符号就可以解决了。
原文链接:blog.csdn.net/yz960611/ar…

6 中文乱码

    方法1:

setWindowTitle(QStringLiteral("我是中文"));

    方法2:
读写文件,在 main 函数开始 添加

QTextCodec *codec = QTextCodec::codecForName("GB18030");
setWindowTitle(codec->toUnicode("我是中文"));

QTextCodec *codec = QTextCodec::codecForName("UTF-8");//或者"GBK",不分大小写
QTextCodec::setCodecForLocale(codec);


方法3:
文件头添加 #pragma execution_character_set("utf-8")


1)、把Qt Creator IDE的环境设置为“UTF-8+BOM”编码。

    2)、所有源文件和头文件都保存为“UTF-8+BOM”编码。

    3)、预编译头文件加入

#if defined(_MSC_VER) && (_MSC_VER >= 1600) ? ?
# pragma execution_character_set("utf-8") ? ?
#endif

    4)、如此一来,不管是MSVC编译器还是MinGW编译器,都能编译通过,且支持中文!

  执行命令 ipconfig 读取输出 中文乱码

 strOutput += process->readAll();

       改为:

QTextCodec *codec = QTextCodec::codecForName("GBK");
strOutput +=codec->toUnicode(process->readAll());

\