ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Qt教程 笔记1

2021-01-07 14:01:55  阅读:421  来源: 互联网

标签:教程 Qt 5.9 GUI 笔记 Desktop MinGW QTextCodec


Qt教程  (http://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 <QDebug>

4. 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,然后重新编译

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

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());

 

目录及简单内容摘要


2 Qt和其它GUI库的对比
    Windows 下的 GUI 库
    Windows 下的 GUI 解决方案比较多:
    ● 基于 C++ 的有 Qt、MFC、WTL、wxWidgets、DirectUI、Htmlayout;
    ● 基于 C# 的有 WinForm、WPF;
    ● 基于 Java 的有 AWT、Swing;
    ● 基于 Pascal 的 有Delphi;
    ● 基于Go语言的有 walk 和 electron;
    ● 还有国内初露头角的 aardio;
    ● Visual Basic 曾经很流行,现在逐渐失去了色彩;
    ● 如果你有 Web 开发经验,也可以基于 Webkit 或 Chromium 将网页转换为桌面程序。

    Linux 下的 GUI 库
    Linux 下常用的 GUI 库有基于 C++ 的 Qt、GTK+、wxWidgets,以及基于 Java 的 AWT 和 Swing。
    其中最著名的就是 Qt 和 GTK+:KDE 桌面系统已经将 Qt 作为默认的 GUI 库,Gnome 桌面系统也将 GTK+ 作为默认的 GUI 库。

3 学习QML还是C++
    QML 只能用来进行界面设计和人机交互,也就是只能胜任 UI 部分,在底层仍然需要调用 C++ 编写的组件来完善功能,

    比如访问数据库、网络通信、多线程多进程、文件读写、图像处理、音频视频处理等都离不开 C++。
    
4 Qt下载
    Qt 官方下载(非常慢) http://download.qt.io/
    
    国内镜像网站 主要是各个高校的:
    中国科学技术大学:http://mirrors.ustc.edu.cn/qtproject/
    清华大学:https://mirrors.tuna.tsinghua.edu.cn/qt/
    北京理工大学:http://mirror.bit.edu.cn/qtproject/
    中国互联网络信息中心:https://mirrors.cnnic.cn/qt/

5 Windows下安装Qt
6 Linux下安装Qt
7 解决cannot find -lGL错误
8 解密Qt安装目录的结构
    使用~表示 Qt 的安装目录。
    ● ~\5.9\mingw53_32\ 目录包含的是 Qt 的类库文件,例如头文件、静态库、动态库等,这些类库文件使用 MinGW 工具集编译而成。
    ● ~\Tools\mingw53_32\ 目录包含的是 MinGW 工具集,例如编译器 g++、链接器 ld、make 工具、打包工具 ar 等。
        
44Qt多窗口
    常用的窗体基类是 QWidget、QDialog 和 QMainWindow,在创建 GUI 应用程序时选择窗体基类就是从这 3 个类中选择。
    
    继承关系图
    QObject 子类: QWidget, QWindow
    QWidget 子类: QDialog, QMainWindow, QSplashScreen, QMdiSubWindow, QDesktopWidget
    
    窗体类的主要特点和用途如下:
    ● QWidget:在没有指定父容器时可作为独立的窗口,指定父容器后可以作为容器的内部组件。
    ● QDialog:用于设计对话框,以独立窗口显示。
    ● QMainWindow:用于设计带有菜单栏、工具栏、状态栏的主窗口,一般以独立窗口显示。
    ● QSplashScreen:用作应用程序启动时的splash窗口,没有边框。
    ● QMdiSubWindow:用于为 QMdiArea 提供一个子窗体,用于MDI(多文档)应用程序的设计。
    ● QDesktopWidget:具有多个显卡和多个显示器的系统具有多个桌面,这个类提供用户桌面信息,如屏幕个数、每个屏幕的大小等。
    ● QWindow:通过底层的窗口系统表示一个窗口的类,一般作为一个父容器的嵌入式窗体,不作为独立窗体。
        
 

 

 

标签:教程,Qt,5.9,GUI,笔记,Desktop,MinGW,QTextCodec
来源: https://blog.csdn.net/youqingyike/article/details/111589755

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有