精华内容
下载资源
问答
  • qt
    万次阅读 多人点赞
    2021-06-30 15:42:50

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


    前言

    我们都知道,我们网校的大部分PC客户端软件都是采用基于Qt的应用程序开发框架来实现的。其中,对于客户端软件,全部或部分使用Qt Widgets控件进行界面开发展示。所以,现在几乎所有的PC端开发伙伴都知道Qt QWidgets是什么,对基于Qt QWidgets 开发界面程序的流程也都熟稔于心。

    但是从Qt 4.7开始,引入了Qt Quick技术,在Qt 5之前,Qt Quick 作为一个新兴的技术,加上当时有各种不完善,所以并没有成为主流的开发框架。但随着 Qt5 的到来,Qt Quick 也进行了很多优化和改进,也发布了Qt Quick 2.0。越来越多的项目也开始选择 Qt Quick 作为开发首选项,而不是Qt QWidgets。

    现在很多Qt的初学者、熟练使用Qt QWidgets开发老师甚至有使用Qt Quick 开发经验的老师,对于Qt Quick到底是什么,和 Qt QWidgets有什么区别?对于新学者应该学习哪一种?项目中应该选用Qt QWidgets 还是 Qt Quick 这些问题,一时也分的不是特别清楚,也讲得不是特别明白。


    提示:以下是本篇

    今天我们就一起探讨一下上面那些问题,重点弄清楚两个问题:

    1. Qt QWidgets 和 Qt Quick 各自有什么特性、特点?

    2. 开发一款软件的时候,我们应该选用Qt QWidgets 还是 Qt Quick 哪种技术?

    为了弄清上面的问题,我们首先应该先了解Qt QWidgets 和 Qt Quick 各自都是什么?国际惯例,先上定义。我们先说一下 Qt Quick : 在官方文档里对它的描述是这样的:

    一种高级用户界面技术,可以轻松创建供移动和嵌入式设备使用的动态触摸式界面和轻量级应用程序。Qt Quick主要由一个改进的Qt Creator IDE(其中包含了Qt Quick设计器)、新增的简单易学的QML语言和新加入Qt库中名为QtDeclarative的模块等三部分组成。这些使得QML更方便不熟悉C++的开发人员和设计人员使用。

    从这个定义来看,其实Qt Quick就是Qt引入的全新的界面编程方式的通称。在Qt 5中,Qt Quick被描述为QML类库:Qt Quick是QML的一个数据类型和功能的标准库,包含了可视化类型、交互类型、动画、模型和视图、粒子特效和渲染特效等。在QML应用程序中,可以通过一个简单的import语句来使用该模块提供的所有功能。

    这里面又提到了 QML,那么什么是QML?

    我们看一下官方对它的定义:

    QML(Qt Meta-Object Language,Qt元对象语言)是一种用于描述应用程序用户界面的声明式编程语言。它使用一些可视组件,通过这些组件之间的交互来描述用户界面。QML是一种高可读性的语言,可以使组件以动态方式进行交互,并且易于复用和自定义。QML允许开发者和设计者进行联合创作,快速创建高性能的、具有流畅的动画效果的、极具视觉吸引力的应用程序。QML提供了一个具有高可读性的类似 JSON 的声明式语法,并提供了必要的 JavaScript 语句和动态属性绑定的支持。

     在Qt 5中,QML语言和引擎框架由Qt QML模块提供。

    看完之后是不是还没有搞清楚 什么是 Qt Quick? 甚至更迷糊了呢?哈哈,定义总是那么的生涩且难以理解,不过如果是初学者,你可以把 QML 和 Qt Quick 的关系想象成C++ 和 Qt 的关系。 如果还不理解,没关系,往下看,等到我们把他们的特性也梳理完了,也许对你的帮助会比较大。

    说完 Qt Quick 的定义之后,我们来说一下 Qt QWidgets 的定义又是什么呢?由于官方对它没有明确的定义,大家也没有形成一个明确的文字定义,但是有过Qt开发经验的人,应该都明白: Qt QWidgets 就是使用Qt 提供的一些开箱既见、所见即所得的一些基础控件,并且非常依赖主流语言(C++或Python等)API的一种界面开发框架。

    一、Qt QWidgets 和 Qt Quick 各自有什么特性、特点

    好了,我们上面知道了 Qt QWidgets 和 Qt Quick 各自是什么,那么我们就可以进入第一个正题了,我们来讨论一下他们各自的功能,我们先从Qt QWidgets 开始:Qt QWidgets 和 Qt Quick 的特性,先总结一下Qt QWidgets:

    1.Qt QWidgets

    1. Qt QWidget 仅可用于基于主流语言的API,比如C++和Python,并不依赖于其他环境。
    2. 开箱即用,Qt 本身提供很多,看起来就像Windows等桌面平台的原生控件(但在移动平台,如Andriod 和 IOS 上,并没有对应原生风格的小组件,与原生控件差别还是很大的),因此,如果我们需要一些无需任何额外的原生控件,那么选择Qt QWidgets 是一种不错的选择。
    3. 虽然 Qt QWidgets 在PC平台上会提供一些开箱即用的、接近于原生风格的控件,但是,我们可以通过设置样式表,来改变小组件的外观,绝大多数情况下,是可以达到我们想要的效果的。例如使用QStyle 或者基于 CSS 的样式表,都能够比较轻松地达到我们想要的样式。
    4. Qt QWidgets 并不依赖于 OpengGL Metal 或者其他图形渲染后端,因为Qt 用自己的绘画类(QPainter)实现渲染。尽管我们还可以根据需要设置为渲染OpenGL Metal 等窗口包装到小部件层次结构中,因此也没有限制。
    5.  我们还可以通过子类化,或者编写自己的控件,来根据需求,定制小组件的行为和样式。
    6. Qt QWidgets 通常不用来做动画效果。虽然我们可以通过编写代码实现复杂的动画,但是编码过程往往会非常的难,非常的复杂。即便我们强行实现了要求的动画效果,也不一定是我们想要的或者非常流畅的UI动画,有时候动画伴随的是复杂的计算,CPU的飙升,带来的往往会不同程度的卡顿。

    2.Qt Quick

    1. Qt Quick 通常使用基于JS的 QML 来编写代码,但是仍然需要一些基于C++ 或者Python 的代码来帮助通讯,例如连接到后端。(有JS开发经验的小伙伴上手会比较快)
    2. Qt Quick 可以在所有平台上使用,并使用原生图形后端进行渲染,比如Metal 或者 Mac OS, 我们也可以在自己为Qt Quick编写的项目中,直接使用原生图形系统进行渲染,对硬件资源利用率更高。
    3. 使用 Qt Quick可以更容易的实现流畅的用户界面,以及复杂的动画效果。这也意味着,我们无需消耗太多精力去实现图形效果和动画就能实现想要的。
    4. 通过现有的控件或基本的Qt Quick 类型,我们也可以定制或者编写自己想要的控件。
    5. 我们通过查看最新版本的Qt6 也发现,可以在移动端上使用Qt Qt Quick Controls 为基础的控件的原生外观了。例如再Andriod 上,可以获取当前主题信息,并进行对应的外观调整了。这对于以后想用Qt用于移动端的开发的老师是个好消息,可以使应用程序的用户界面开起来像原生应用程序一样,开发起来也会变得更加容易一些。

    二、开发一款软件的时候,我们应该选用Qt QWidgets 还是 Qt Quick 哪种技术?

    二、如何选择

    通过上面的总结,我们知道了Qt QWidgets 和 Qt Quick 的各自特性之后,我们可以讨论第二个问题了 “开发一款软件的时候,我们应该选用Qt QWidgets 还是 Qt Quick 哪种技术?”

    其实我们发现针对桌面系统软件开发的时候,用Qt QWidget 还是 Qt Quick, 其实是根据我们软件的需求来决定的。一般有一下几点建议:

    1. 如果我们需要一个快速、简单的UI,对动画效果要求不高的话,使用Qt QWidget 绝对是个不错的选择。它有很多现成的组件可以使用,根据需求进行拼装即可,无需太多操作。
    2. 如果我们不是太了解JS,并且需要开发一个桌面应用,那选择使用Qt QWidget 上手,肯定是迄今为止最容易使用的工具了。
    3. 不过如果我们想要更加炫酷的界面,更加流畅的动画,我们就最好使用Qt Quick 了。
    4. 如果我们将来想使用Qt for MCUs 开发,那么我们只能够选择Qt Quick了。
    5. 如果我们是用来进行移动设备(Andriod 或者IOS)、嵌入式设备开发,那么最好使用Qt Quick,因为相对于Qt QWidgets 而言,它可以更好的利用有限的资源,尽管我们可以再这些设备上使用小组件,但是在性能方面,Qt Quick 可以使用本地图形渲染器,也就是说,我们的应用程序性能会更加出色,动画或者动态效果会更加流畅6. 如果我们要跨平台开发,最好还是使用Qt Quick, 因为使用Qt QWidgets 你需要在不同的平台做不同的UI风格,而使用Quick则不会。

    总结

    到这里,我们就把今天重点讨论的两个问题说明白了,再总结一下,就是

    1. Qt QWidgets 和 Qt Quick 都是跨平台的,相对而言,Qt QWidgets 是一种更老、更成熟的框架(方案),Qt Quick 则更新,更现代一些。

    2. 想要快速简单的构建一个无需绚丽动画的传统桌面程序,优先使用Qt QWidgets。

    3. 想要绚丽界面和动画,或者移动端程序、跨平台程序建议优先使用Qt Quick。

    随着Qt Quick的持续发展,未来的桌面开发程序,会越来越多的使用Qt Quick 技术的,希望各位老师有空也能够多学习一下相关知识。

    更多相关内容
  • Qt实现的FlatUI样式

    千次下载 热门讨论 2016-12-11 16:06:35
    既然是扁平化设计框架的优秀代表,当然需要在自己项目中应用应用,Qt中的qss机制,和css极为相似,感觉就是脱胎于css,用qss来实现Qt界面样式不是一般的方便,而是相当的爽,在看到FlatUI这样的精美的扁平化设计样式...
  • QtQt简介

    千次阅读 2021-03-27 14:41:19
    QT是一个跨平台的C++图形用户界面库,由挪威TrollTech公司出品,目前包括Qt Creator, QtEmbedded,Qt Designer快速开发工具,Qt Linguist国际化工具等部分,Qt支持所有Linux/Unix系统,还支持Windows平台、Mac平台...

    00. 目录

    01. Qt概述

    QT是一个跨平台的C++图形用户界面库,由挪威TrollTech公司出品,目前包括Qt Creator, QtEmbedded,Qt Designer快速开发工具,Qt Linguist国际化工具等部分,Qt支持所有Linux/Unix系统,还支持Windows平台、Mac平台等等。

    02. Qt优点

    Qt是一个跨平台的C++图形用户界面应用程序框架,提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt很容易扩展,并且允许真正地组件编程。Qt与GTK、KDE、MFC,OWL,VCL,ATL是一样的图形界面库。

    QT优点如下:

    2.1 优良的跨平台特性

    Qt支持下列操作系统: Microsoft Windows,Linux,Solaris, SunOS, HP-UX, Digital UNIX (OSF/1,Tru64),Irix,FreeBSD,BSD/OS,SCO,AIX,OS390,QNX等等。

    2.2 面向对象

    Qt的良好封装机制使得Qt的模块化程度非常高,可重用性较好,对于用户开发来说非常方便。 Qt提供了一种称为signals/slots的安全类型来替代 callback,使得各个元件之间的协同工作变得十分简单。

    2.3 丰富的API

    Qt包括多达250个以上的C++类,还提供基于模板的collections, serialization,file,I/O device,directory management,date/time类。

    2.4 支持2D/3D图形渲染,支持OpenGL

    2.5 大量的开发文档

    2.6 XML、JSON支持等等

    03. Qt相关工具

    QT开发工具包含Qt Creator、Qt Designer、Qt Linguist、Qt Assistant、Qmake、CMake等等。

    3.1 Qt Creator

    Qt Creator是用于Qt开发的轻量级跨平台集成开发环境。

    3.2 Qt Designer

    Qt Designer是强大的拖曳式图形化用户界面排版和设计工具。

    Qt Designer功能如下:

    A、支持表单和对话框的创建,可即时预览
    B、与Qt版面系统集成
    C、宏大的标准widgets集
    D、支持客户定制的widgets和对话框
    E、与Microsoft Visual Studio .NET无缝集成
    

    Qt Designer优势如下:

    A、大大加快了界面的设计过程
    B、支持所有平台上的本地外观感觉
    C、开发者能在自行选择的工作环境内充分发挥其现有技能
    

    3.3 Qt Linguist

    Qt Linguist一整套工具,支持对Qt应用作快捷无误的翻译,是一组能理顺国际化工作流的工具。

    Qt Linguist功能如下:

    A、采集所有的用户界面文本并以一个简洁的窗口将其展现给人工译者
    B、支持所有语言
    C、从单一应用的二进制程序内部提供同时多语言支持及同时多写入系统
    

    Qt Linguist优势如下:

    A、大大加快了翻译/本地化进程
    B、与Qt的语言敏感排版引擎协同,以创建与语言不相关的简洁一致的界面
    C、轻松应对国际市场
    

    3.4 Qt Assistant

    Qt Assistant是可定制可重发布的帮助文件和文档阅读器。

    Qt Assistant功能如下:

    A、简单明快的web浏览器般导航、书签和文档文件连接
    B、支持富文本HTML
    C、全文本关键词查阅
    D、可定制并随Qt供应
    

    Qt Assistant优势如下:

    A、无需再从头开始构建帮助系统
    B、充分利用现有的HTML技能
    C、以方便搜寻和导航的格式向最终用户提供文档
    

    3.5 QMake

    Qmake跨平台makefile生成器。

    Qmake功能如下:

    A、读取工程源码,生成依赖关系树,生成平台相关工程和makefiles
    B、与Visual Studio及Xcode集成
    

    Qmake优势如下:

    A、无需担忧跨平台编译
    B、降低对makefile手工构建的需求度
    

    3.6 CMake

    CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。

    3.7 其它工具

    A、lupdate:从源代码文件或其他资源文件中提取需要翻译的字符串,并将之存入xml格式的.ts文件中。

    B、lrelease:负责将.ts文件转化为程序使用的.qm文件。.qm档会去掉.ts档中所有的空白和未翻译的内容,并将存储格式压缩。

    C、lconvert:用于翻译文件之间的格式转换。

    D、QVFb:虚拟帧缓存设备,模拟framebuffer设备(尺寸、色深),还可以通过skin模拟硬件键盘的布局(包括特殊的按键),可以便捷在桌面系统机器上开发嵌入式程序

    E、makeqpf:创建用于嵌入式设备的qpf格式。qpf是一种预先渲染的字体,直接保存成二进制内容,使用的时候可以用内存映射加载,从加载到绘制的过程不需要计算。

    F、uic:User Interface Compiler。从用户界面的文件(.ui)生成C++代码。

    G、rcc:Resource Compiler。rcc工具根据.qrc文件的内容将相关的资源在编译过程中嵌入到Qt应用程序。

    H、qtconfig:基于X11的Qt的配置工具和在线帮助。

    I、qconfig:Qt Embedded(Linux和Windows CE)配置工具。

    J、qtdemo:Qt的实例和示范项目的加载器。

    K、qt3to4:协助移植Qt 3程序到Qt 4的工具。

    L、qdbusxml2cpp:QtDBus XML compiler。将xml格式的D-Bus接口描述转换成为C++源代码

    M、D-Bus Viewer:可以查看D-Bus对象和信息的工具。

    N、Qt Visual Studio Add-in:Visual Studio集成

    O、Qt Eclipse Integration:Eclipse集成

    04. Qt基础模块

    • Qt Concurrent
    • Qt Core
    • Qt Core Compatability APIs
    • Qt D-Bus
    • Qt GUI
    • Qt Help
    • Qt Network
    • Qt OpenGL
    • Qt Print Support
    • Qt QML
    • Qt Quick
    • Qt Quick 3D
    • Qt Quick Controls
    • Qt Quick Layouts
    • Qt Quick Timeline
    • Qt Quick Widgets
    • Qt Shader Tools
    • Qt SQL
    • Qt SVG
    • Qt Test
    • Qt UI Tools
    • Qt Wayland
    • Qt Wayland Compositor
    • Qt Widgets
    • Qt XML

    05. Qt扩展模块

    Qt 6.0用户还可以通过软件包管理器获得以下扩展模块:

    • Qt 3D
    • Qt Image Formats
    • Qt Network Authorization
    • M2M package: Qt CoAP
    • M2M package: Qt MQTT
    • M2M package: Qt OpcUA

    我们目前仍使用安装程序作为软件包管理器后端,用户需要使用Qt安装程序(或维护工具)选择附加库。我们正在寻找其他解决方案,改善Qt Creator对使用附加库的支持。

    我们计划在Qt 6.1中提供以下附加库:

    • Active Qt
    • Qt Charts
    • Qt Quick Dialogs (File dialog)
    • Qt ScXML
    • Qt Virtual Keyboard

    Qt 6.1版本已在1月份完成功能特性的冻结,所以目前仅包含了少量的扩展模块。但稍后我们会提供更多的扩展模块供预览。

    我们计划在Qt 6.2中提供以下附加库:

    • Qt Bluetooth
    • Qt Data Visualization
    • Qt Lottie Animation
    • Qt Multimedia
    • Qt NFC
    • Qt Positioning
    • Qt Quick Dialogs: Folder, Message Box
    • Qt Remote Objects
    • Qt Sensors
    • Qt SerialBus
    • Qt SerialPort
    • Qt WebChannel
    • Qt WebEngine
    • Qt WebSockets
    • Qt WebView

    上面未列出某些模块,因为:

    • 它们是特意从Qt 6中删除的(例如Qt KNX、Qt Script和Qt XML Patterns)。
    • 该功能是或将成为其他模块的一部分,因此不再需要作为单独模块(例如平台特定的额外项)
    • 我们计划在Qt 6.2 LTS发布后或通过Qt Marketplace发布它们。
    • 它们不属于Qt框架,例如工具(Qt Creator、Qt Design Studio等)、Qt Safe Renderer、Qt Automotive Suite等。

    06. 老版本模块

    QT基础模块包括:
    1) Qt Core,提供核心的非GUI功能,所有模块都需要Qt Core模块。Qt Core模块的类包括了动画框架、定时器、各个容器类、
    时间日期类、事件、IO、JSON、插件机制、智能指针、图形(矩形、路径等)、线程、XML 等。
    2) Qt Gui,提供 GUI 程序的基本功能,包括与窗口系统的集成、事件处理、OpenGL 和 OpenGL ES 集成、2D 图像、字体、拖放等,
    一般由 Qt 用户界面类内部使用,也可以用于访问底层的 OpenGL ES 图像 API。Qt Gui 模块提供的是所有图形用户界面程序都需要
    的通用功能。
    3) Qt Multimedia,提供视频、音频、收音机以及摄像头等功能,需要在 pro 文件中添加 QT += multimedia。
    4) Qt Network,提供跨平台的网络功能,需要在 pro 文件中添加 QT += network。
    5) Qt Qml,提供供 QML(一种脚本语言,也提供 JavaScript 的交互机制) 使用的 C++ API,需要在 pro 文件中添加 QT += qml。
    6) Qt Quick,允许在 Qt/C++ 程序中嵌入 Qt Quick(一种基于 Qt 的高度动画的用户界面,适合于移动平台开发),需要在 pro 文
    件中添加 QT += quick。
    7) Qt SQL,允许使用 SQL 访问数据库,需要在 pro 文件中添加 QT += sql。
    8) Qt Test,提供 Qt 程序的单元测试功能,需要在 pro 文件中添加 QT += testlib。
    9) Qt Webkit,基于 WebKit2 的实现以及一套全新的 QML API
    
    QT扩展模块包括:
    (1)Qt 3D,提供声明式语法,在 Qt 程序中可以简单地嵌入 3D 图像。Qt 3D 为 Qt Quick 添加了 3D 内容渲染。Qt 3D 提供了 
    QML 和 C++ 两套 API,用于开发 3D 程序。
    (2)Qt Bluetooth,提供用于访问蓝牙无线设备的 C++ 和 QML API。
    (3)Qt Contacts,用于访问地址簿或者联系人数据库的 C++ 和 QML API。
    (4)Qt Concurrent,封装了底层线程技术的类库,方便开发多线程程序。
    (5)Qt D-Bus,是一个仅供 Unix 平台使用的类库,用于利用 D-Bus 协议进行进程间交互。
    (6)Qt Graphical Effects,提供一系列用于实现图像特效的类,比如模糊、锐化等。
    (7)Qt Image Formats,支持图片格式的一系列插件,包括 TIFF、MNG、TGA 和 WBMP。
    (8)Qt JS Backend,模块没有公开的 API,是 V8 JavaScript 引擎的一个移植,仅供 QtQml 模块内部使用。
    (9)Qt Location,提供定位机制、地图和导航技术、位置搜索等功能的 QML 和 C++ API。
    (10)Qt OpenGL,方便在 Qt 应用程序中使用 OpenGL,仅仅为了程序从 Qt 4 移植到 Qt 5 的方便才保留下来,如果你需要在新的 
    Qt 5 程序中使用 OpenGL 相关技术,需要使用的是 QtGui 模块中的 QOpenGL。
    (11)Qt Organizer,使用 QML 和 C++ API 访问组织事件(organizer event)。organizer API 是 Personal 
    Information Management API 的一部分,用于访问 Calendar 信息。通过 Organizer API 可以实现:从日历数据库访问日历时间、导入 
    iCalendar 
    事件或者将自己的事件导出到 iCalendar。
    (12)Qt Print Support,提供对打印功能的支持。
    (13)Qt Publish and Subscribe,为应用程序提供对项目值的读取、导航、订阅等的功能。
    (14)Qt Quick 1,从 Qt 4 移植过来的 QtDeclarative 模块,用于提供与 Qt 4 的兼容。如果你需要开发新的程序,需要使用 
    QtQuick 模块。
    (15)Qt Script,提供脚本化机制。这也是为提供与 Qt 4 的兼容性,如果要使用脚本化支持,请使用 QtQml 模块的 QJS* 类。
    (16)Qt Script Tools,为使用了 Qt Script 模块的应用程序提供的额外的组件。
    (17)Qt Sensors,提供访问各类传感器的 QML 和 C++ 接口。
    (18)Qt Service Framework,提供客户端发现其他设备的服务。Qt Service Framework 为在不同平台上发现、实现和访问服务定义了
    一套统一的机制。
    (19)Qt SVG,提供渲染和创建 SVG 文件的功能。
    (20)Qt System Info,提供一套 API,用于发现系统相关的信息,比如电池使用量、锁屏、硬件特性等。
    (21)Qt Tools,提供了 Qt 开发的方便工具,包括 Qt CLucene、Qt Designer、Qt Help 以及 Qt UI Tools 。
    (22)Qt Versit,提供了对Versit API 的支持。Versit API是Personal Information Management API 的一部分,用于 QContacts
     和 vCard 以及 QOrganizerItems 和 iCalendar 之间的相互转换。
    (23)Qt Wayland,仅用于Linux平台,用于替代 QWS,包括 Qt Compositor API(server)和 Wayland 平台插件(clients)。
    (24)Qt WebKit,从 Qt 4 移植来的基于 WebKit1 和 QWidget 的 API。
    (25)Qt Widgets,使用 C++ 扩展的 Qt Gui 模块,提供了一些界面组件,比如按钮、单选框等。
    (26)Qt XML,SAX 和 DOM 的 C++ 实现。该模块已经废除,请使用 QXmlStreamReader/Writer。
    (27)Qt XML Patterns,提供对 XPath、XQuery、XSLT 和 XML Schema 验证的支持。
    

    07. 附录

    7.1 Qt教程汇总
    网址:https://dengjin.blog.csdn.net/article/details/115174639

    展开全文
  • Qt5开发及实例(完整版PDF)part1

    热门讨论 2015-03-06 13:35:41
    第1章 Qt概述 1 1.1 什么是Qt 1 1.2 Qt 5的安装 2 1.2.1 下载Qt 5 Creator 2 1.2.2 运行Qt 5 Creator 2 1.2.3 Qt 5开发环境 4 1.3 Qt 5开发步骤及实例 6 1.3.1 Qt 5 Designer设计简单实例 7 1.3.2 代码实现简单实例 ...
  • QT自定义精美换肤界面

    千次下载 热门讨论 2014-08-15 20:39:52
    陆陆续续用QT开发过很多项目,也用QT写过不少私活项目,也写过N个工具,一直梦寐以求能像VC一样可以很方便的有个自定义的界面,QSS的强大让我看到了很好的希望。 特点: 1:无边框窗体,自定义标题栏,鼠标拖动,...
  • QT经典教程_详细一步一步例子

    千次下载 热门讨论 2013-04-12 21:24:10
    为了使更多的Qt初学者能尽快入门Qt,也为了QtQt Creator的快速普及,我们花费大量精力写出了这一系列教程。虽然教程的知识可能很浅显,虽然教程的语言可能不规范,但是它却被数十万网友所认可。我们会将这一系列...
  • Qt开发MQTT(一) 之Qt官方Qt MQTT

    万次阅读 多人点赞 2020-03-05 22:35:31
    Qt开发MQTT程序有两种方式,一个是Qt官方提供的基于MQTT的封装,一个是第三方(EMQ)开发的用于Qt调用MQTT的接口,二者使用方法大同小异,并且均提供了源码。那么,这里先来介绍第一种,如基于Qt官方提供的封装来...

    概述

    Qt开发MQTT程序有两种方式,一个是Qt官方提供的基于MQTT的封装,一个是第三方(EMQ)开发的用于Qt调用MQTT的接口,二者使用方法大同小异,并且均提供了源码。那么,这里先来介绍第一种,如基于Qt官方提供的封装来使用MQTT。

    Qt官方虽然在2017年就已经提供了对MQTT的封装,但是并没有正式加入到Qt的标准库里面,所以需要自己下载源码进行编译。

    Qt官方介绍文档地址:https://doc.qt.io/QtMQTT/qtmqtt-index.html

    下载

    Qt官方在github上提供了源代码,地址:https://github.com/qt/qtmqtt
    在这里插入图片描述
    这是最新的,基于MQTT 5.0协议的版本。先把源码下载下来。

    编译

    下载源码后得到如下文件,直接打开工程文件准备编译
    在这里插入图片描述
    我这里的编译环境是:Qt5.12.3+vs2017

    注意,编译这个源码需要安装perl,否则会报错:perl 不是内部或外部命令,也不是可运行的程序。

    perl下载地址:https://www.perl.org/get.html
    官网下载速度比较慢,我上传到网盘了,可以在这里下载:

    链接:https://pan.baidu.com/s/1p5YOo-FU-ZLJUtuZSN0Rjg 提取码:i0dm

    安装完Perl后会自动写入环境变量, 这时候再次编译(Release模式)QtMqtt源码,编译完成后得到以下文件:
    在这里插入图片描述

    bin目录下就是我们要的库文件:
    在这里插入图片描述

    接下来就可以将mqtt部署到自己的Qt项目中了。

    部署到Qt项目

    编译出来的Qt Mqtt库,要使用它有两种方式,一种是直接在项目中导入外部库和头文件,还有一种是将其以模块的形式部署到Qt的安装目录,其中第二种的好处就是,只需要做一次操作,以后需要再用Mqtt库就可以直接调用了,不需要每次都导入外部库。这里两种方法都介绍一下,首先来看第一种。

    导入外部库

    新建一个Qt工程
    然后将刚刚编译的源码生成目录下的lib文件夹中以下四个文件拷贝:
    在这里插入图片描述在这里插入图片描述

    在新建工程目录下创建lib文件夹,将拷贝的文件粘贴进去:
    在这里插入图片描述
    然后在qtmqtt源码目录下(qtmqtt\src\mqtt)的所有.h头文件拷贝,在新建工程目录下创建include文件夹,将拷贝的文件粘贴进去:
    在这里插入图片描述

    打开新建工程的pro文件,添加:
    在这里插入图片描述
    再添加库文件引用:

    win32:CONFIG(release, debug|release): LIBS += -L$$PWD/lib/ -lQt5Mqtt
    else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/lib/ -lQt5Mqttd
    

    添加include文件的引用:

    INCLUDEPATH += $$PWD/include
    DEPENDPATH += $$PWD/include
    

    ok, 这样就可以调用Qt Mqtt的库文件了,直接可以包含头文件来使用了。#include "QtMqtt/QMqttClient"

    为了统一演示,先介绍完第二种方法后再来看demo。

    部署到Qt安装目录

    再来看第二种方法,如何将QtMqtt的库直接部署到Qt安装目录中,这样只需要部署一次,以后在任何工程中引用都不需要再额外导入库了,相比第一种来说更方便些。

    首先,将qtmqtt源码目录下(qtmqtt\src\mqtt)的所有.h头文件拷贝,Qt安装目录下的include文件夹中创建一个mqtt目录,将拷贝的文件粘贴进去:
    在这里插入图片描述在这里插入图片描述
    然后,将源码编译生成目录下的lib中以下6个文件拷贝
    在这里插入图片描述
    并粘贴到Qt安装目录下的lib文件夹中去:
    在这里插入图片描述

    接下来将源码编译生成的两个库文件拷贝到Qt安装目录的bin中:
    在这里插入图片描述
    在这里插入图片描述

    最后再拷贝模块配置文件到Qt安装目录中
    在这里插入图片描述
    在这里插入图片描述

    ok,配置完毕,这种方式配置在新建工程中引用只需要引入模块就可以直接使用了

    QT += mqtt
    

    包含头文件

    #include <QtMqtt/QtMqtt>
    

    所以推荐使用第二种方式进行配置。

    接下来看看Demo。

    Demo演示

    为了方便演示,我们直接使用Qt Mqtt源码中自带的示例来编译运行。
    在这里插入图片描述在这里插入图片描述
    这个示例Qt官方有详细介绍的,https://doc.qt.io/QtMQTT/qtmqtt-simpleclient-example.html
    将该示例打开,有个地方需要改一下,打开Pro文件
    在这里插入图片描述
    将以上两行注释掉,要不然会有依赖,无法独立运行。

    关键代码:

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    #include <QtCore/QDateTime>
    #include <QtMqtt/QMqttClient>
    #include <QtWidgets/QMessageBox>
    
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
        m_client = new QMqttClient(this);
        m_client->setHostname(ui->lineEditHost->text());
        m_client->setPort(ui->spinBoxPort->value());
    
        connect(m_client, &QMqttClient::stateChanged, this, &MainWindow::updateLogStateChange);
        connect(m_client, &QMqttClient::disconnected, this, &MainWindow::brokerDisconnected);
    
        connect(m_client, &QMqttClient::messageReceived, this, [this](const QByteArray &message, const QMqttTopicName &topic) {
            const QString content = QDateTime::currentDateTime().toString()
                        + QLatin1String(" Received Topic: ")
                        + topic.name()
                        + QLatin1String(" Message: ")
                        + message
                        + QLatin1Char('\n');
            ui->editLog->insertPlainText(content);
        });
    
        connect(m_client, &QMqttClient::pingResponseReceived, this, [this]() {
            const QString content = QDateTime::currentDateTime().toString()
                        + QLatin1String(" PingResponse")
                        + QLatin1Char('\n');
            ui->editLog->insertPlainText(content);
        });
    
        connect(ui->lineEditHost, &QLineEdit::textChanged, m_client, &QMqttClient::setHostname);
        connect(ui->spinBoxPort, QOverload<int>::of(&QSpinBox::valueChanged), this, &MainWindow::setClientPort);
        updateLogStateChange();
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    void MainWindow::on_buttonConnect_clicked()
    {
        if (m_client->state() == QMqttClient::Disconnected) {
            ui->lineEditHost->setEnabled(false);
            ui->spinBoxPort->setEnabled(false);
            ui->buttonConnect->setText(tr("Disconnect"));
            m_client->connectToHost();
        } else {
            ui->lineEditHost->setEnabled(true);
            ui->spinBoxPort->setEnabled(true);
            ui->buttonConnect->setText(tr("Connect"));
            m_client->disconnectFromHost();
        }
    }
    
    void MainWindow::on_buttonQuit_clicked()
    {
        QApplication::quit();
    }
    
    void MainWindow::updateLogStateChange()
    {
        const QString content = QDateTime::currentDateTime().toString()
                        + QLatin1String(": State Change")
                        + QString::number(m_client->state())
                        + QLatin1Char('\n');
        ui->editLog->insertPlainText(content);
    }
    
    void MainWindow::brokerDisconnected()
    {
        ui->lineEditHost->setEnabled(true);
        ui->spinBoxPort->setEnabled(true);
        ui->buttonConnect->setText(tr("Connect"));
    }
    
    void MainWindow::setClientPort(int p)
    {
        m_client->setPort(p);
    }
    
    void MainWindow::on_buttonPublish_clicked()
    {
        if (m_client->publish(ui->lineEditTopic->text(), ui->lineEditMessage->text().toUtf8()) == -1)
            QMessageBox::critical(this, QLatin1String("Error"), QLatin1String("Could not publish message"));
    }
    
    void MainWindow::on_buttonSubscribe_clicked()
    {
        auto subscription = m_client->subscribe(ui->lineEditTopic->text());
        if (!subscription) {
            QMessageBox::critical(this, QLatin1String("Error"), QLatin1String("Could not subscribe. Is there a valid connection?"));
            return;
        }
    }
    
    

    我们直接编译运行该示例:
    broker.hivemq.com
    在这里插入图片描述
    在官方文档中介绍,可以直接连接以下两个服务器地址:
    在这里插入图片描述

    经测试,第一个地址连接不上,所以我们直接输入第二个地址进行测试:broker.hivemq.com
    在这里插入图片描述
    输入地址,点击连接后就可以连接服务器,并且State变成了2就表示已经连上了。
    然后点击订阅按钮,表示要订阅这个主题,在点击发布,就可以收到信息了:
    在这里插入图片描述
    可以在多台电脑上进行测试,只要订阅了同一个主题,那么一端发送消息,其他端就可以接收到相应的信息。

    Qt官方提供了非常详细的文档介绍,大家可以去参考接口的使用,最主要使用的类是QMqttClient

    至此,Qt官方提供的MQTT封装模块使用介绍已经全部完了,下一篇将介绍一个第三方基于MQTT封装的使用方式。

    演示Demo在这里

    展开全文
  • Qt on Android核心编程_完整版 PDF电子书
  • Qt使用Poppler-qt5操作PDF文件

    热门讨论 2014-04-02 22:58:41
    Qt使用Poppler-qt5操作PDF文件 原文 http://blog.csdn.net/hellogdut/article/details/22827431
  • Qt:windows下Qt安装教程

    万次阅读 多人点赞 2020-07-24 20:25:15
    win10按照qt

    软件下载

    Qt5.12下载网址: http://download.qt.io/archive/qt/5.12/5.12.2/

    注意: 官网很慢,所以我们一般是使用国内镜像网站:

    清华大学:https://mirrors.tuna.tsinghua.edu.cn/qt/official_releases/qt/
    中国互联网络信息中心:https://mirrors.cnnic.cn/qt/official_releases/qt/
    中国科学技术大学:http://mirrors.ustc.edu.cn/qtproject/official_releases/qt/

    在这里插入图片描述

    注意:安装时尽量选择某个高的版本,比如你要安装qt5.14.x系列的版本,目前有qt5.14.0、qt5.14.2、qt5.14.3,那就选择qt5.14.3
    例子:不要安装qt5.14.0,因为没有办法打包,是官方bug。这个bug在qt5.14.2和qt5.14.3中得到了解决

    将 Qt 软件的下载地址复制到迅雷的下载框,如果迅雷官方有资源,就会自动识别,下载速度就很快了。

    如何找到 Qt 软件的下载地址呢?以清华大学开源软件镜像站为例,进入 Qt 5.9.0 的下载目录(https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/5.12/5.12.0/),在某个链接处单击鼠标右键,会弹出一个菜单,选择“复制链接地址”,如下图所示:
    在这里插入图片描述
    然后再粘贴到迅雷的下载框即可

    下载好之后的安装包:
    在这里插入图片描述

    目录说明(可以不看)

    Qt 官网有一个专门的资源下载网站,所有的开发环境和相关工具都可以从这里下载,具体地址是: http://download.qt.io/
    在这里插入图片描述

    项目说明
    snapshots预览版,最新的开发测试中的 Qt 库和开发工具。
    onlineQt 在线安装源。
    official_releases正式发布版,是与开发版相对的稳定版 Qt 库和开发工具(可以下载Qt开发环境和源代码)
    ministro迷你版,目前是针对 Android 的版本。
    learning有学习 Qt 的文档教程和示范视频。
    development_releases开发版,有新的和旧的不稳定版本,在 Qt 开发过程中的非正式版本。
    community_releases社区定制的 Qt 库,Tizen 版 Qt 以及 Qt 附加源码包。
    archive各种 Qt 开发工具安装包,新旧都有(可以下载 Qt 开发环境和源代码)。

    archive 和 official_releases 两个目录都有最新的 Qt 开发环境安装包,我们以 archive 目录里的内容为例来说明。点击进入 archive 目录:

    在这里插入图片描述

    项目说明
    vsaddin这是 Qt 针对 Visual Studio 集成的插件
    qtcreator这是 Qt 官方的集成开发工具,但是 qtcreator 本身是个空壳,它没有编译套件和 Qt 开发库。除了老版本的 Qt 4 需要手动下载 qtcreator、编译套件、Qt 开发库进行搭配之外,一般用不到。对于我们教程压根不需要下载它,因为 Qt 5 有专门的大安装包,里面包含开发需要的东西,并且能自动配置好。
    qt这是 Qt 开发环境的下载目录,我们刚说的 Qt 5 的大安装包就在这里面。
    online_installers在线安装器,国内用户不建议使用,在线安装是龟速,还经常断线。我们教程采用的全部是离线的大安装包。

    我们再进入 qt 子目录 ,看到如下列表:
    在这里插入图片描述
    这个 qt 目录包含了所有的 Qt 版本,从 1.0 到目前的 6.0。

    进入 5.12 目录,会看到各种子版本:
    在这里插入图片描述
    这里解释一下 Qt 的版本号,比如 5.12.8 是完整的 Qt 版本号,第一个数字 5 是大版本号(major),第二个数字 12 是小版本号(minor),第三个数字 8 是补丁号(patch)。 只要前面两个数字相同,Qt 的特性就是一致的,最后的数字是对该版本的补丁更新。也就是说本教程对 5.12.* 系列的 Qt 都是通用的,下载5.12.* 任意一个版本都可以,这里我们以下载 5.12.2。

    点击5.12.2:
    在这里插入图片描述
    我们以 Windows 安装包(qt-opensource-windows-x86-5.9.0.exe)讲解一下 Qt 安装包命名规则,其中:

    • opensource 是指开源版本;
    • windows 是指开发环境的操作系统;
    • x86 是指 32 位系统;
    • 5.9.0 是 Qt 版本号。

    软件安装

    Step1: 管理员权限运行安装包, 稍等片刻, 然后点击next

    在这里插入图片描述
    Step2: 如果没有账号, 则选择skip,不过现在已经不允许skip了,必须先注册一个

    在这里插入图片描述
    Step3: Qt设置欢迎界面, 选择下一步
    在这里插入图片描述
    Step4: 选择安装路径
    在这里插入图片描述
    Step5: 选择组件, 然后选择下一步
    在这里插入图片描述
    Qt 的安装组件分为两部分:一部分是“Qt xxx.xxx”分类下的,该分类包含的是真正的 Qt 开发库组件;另一部分是“Tools”分类下的,该分类包含的是集成开发环境和编译工具。

    “Qt xxx.xxx”组件说明:(一般选择MinGW xxx, Qt xxx就可以了)

    组件说明
    MSVC ***针对 Windows 平台上的 MSVC 编译器的 Qt 组件,如 msvc2015 32-bit 和 msvc2015 64-bit 等。安装该组件需要计算机上已经安装相应版本的 Visual Studio。
    MinGW ***编译器模块。MinGW 是 Minimalist GNU for Windows 的缩写,MinGW 是 Windows 平台上使用的 GNU 工具集导入库的集合。
    UWP ***WP 是 Windows 10 中 Universal Windows Platform 的简称,有不同编译器类型的 UWP,属于 MSVC 编译器生成的 Qt 库。如果不是开发 UWP 应用程序,就不需要,直接忽略。
    Android ***这是针对安卓应用开发的 Qt 库,一般情况下用不到
    SourcesQt 的源代码包,除非你想阅读 Qt 的源码,否则不用安装。 建议选择,因为某个时候你可能需要它
    Qt ***Qt 的附加模块,大部分建议安装,这些附加模块括号里的 TP 是指 Technology Preview ,技术预览模块的意思,还处在功能测试阶段,不是正式版模块;附加模块括号里的 Deprecated 是指抛弃的旧模块,兼容旧代码使用的,一般用不到(如果不是为和以前开发的源程序兼容,过时的模块不要选择)。这些附加模块读者可以选择部分或都勾选了安装,占用空间不大。

    部分组件说明:

    • Qt Charts 是二维图表模块,用于绘制柱状图、饼图、曲线图等常用二维图表。
    • Qt Data Visualization 是三维数据图表模块,用于数据的三维显示,如散点的三维空间分布、三维曲面等。

    “Tools”分类下的开发组件(一般选择Qt Creator xxx 和MinGW xxxxx)

    组件说明
    Qt Creator xxx这是集成开发环境,强制安装的,以后所有的项目和代码都在 Qt Creator 里面新建和编辑。
    Qt Creator xxxx CDB Debugger surpport用于和 CDB 调试工具对接,默认安装,一般用于调试 VC 编译的 Qt 程序。
    MinGW xxxxx这是开源的编译器套件,建议安装
    Strawberry Perl 5.22.1.3用于编译 Qt 源代码的 Perl 开发环境,不需要安装。如果读者以后用到,也可以另外手动安装,在搜索引擎搜索 Strawberry Perl 关键词,去 Strawberry Perl 官网下载最新的安装包是一样用的。

    Step6: 同意许可协议, 然后选择下一步

    在这里插入图片描述

    Step7: 开始菜单快捷方式
    可以修改在菜单中显示的名字, 然后下一步
    在这里插入图片描述

    Step8: 点击安装即可
    在这里插入图片描述
    Step9: 选择下一步
    在这里插入图片描述
    Step10: 完成Qt向导
    在这里插入图片描述
    Step11: 完成安装, 打开软件
    在这里插入图片描述

    安装完成之后,在 Windows“开始”菜单中会看到 Qt 的 程序组。
    在这里插入图片描述

    程序说明
    Assistant(Qt 助手)用来查看帮助文档,已被集成在 Qt Creator 中。
    Designer(Qt 设计师)图形界面可视化编辑工具,已被集成在 Qt Creator 中,在 Qt Creator 中编辑或创建界面文件时,就可以自动打开。
    Linguist(Qt 语言家)多国语言翻译支持工具,可以用来编辑语言资源文件,在开发多语言界面的应用程序时会用到。
    Qt 5.xx.x(MinGW 5.3.0 32bit)Qt 命令行工具,用来配置 Qt 开发环境(主要是设置 PATH 变量)

    测试是否安装成功

    运行qt示例测试是否安装成功

    qt自带了很多小例子,是我们学习的好帮手。运行方法:

    step1:打开软件,进入欢迎–>示例,然后随便点击一个实例

    在这里插入图片描述
    step2:点击config project
    在这里插入图片描述
    step:这个时候它会调到编辑页面,可以看出打开了这个项目,接下来我们就可以运行这个项目了

    在这里插入图片描述

    新建项目测试是否安装成功

    Step1: 新建一个项目
    在这里插入图片描述
    Step2: 选择Qt控件项目
    在这里插入图片描述
    Step3: 项目介绍和位置
    在这里插入图片描述
    Step4: 选择Kit

    在这里插入图片描述
    Step5: 类信息

    默认即可
    在这里插入图片描述
    Step6: 项目管理
    在这里插入图片描述
    Step7: 运行项目
    在这里插入图片描述
    Step8: 结果测试

    如果出现一个窗口, 表示软件已经安装好了

    在这里插入图片描述

    Qt安装目录结构说明

    Qt 整体目录结构

    不同版本 Qt 的安装目录结构大同小异,本节我们以 Qt 5.9.0 为例来说明,如下图所示。
    在这里插入图片描述
    注意,~\5.9\ 和 ~\Tools\ 目录下都有 mingw53_32 目录(图中我用红色标出来了),但是两者是有区别的:

    • ~\5.9\mingw53_32\ 目录包含的是 Qt 的类库文件,例如头文件、静态库、动态库等,这些类库文件使用 MinGW 工具集编译而成。
    • ~\Tools\mingw53_32\ 目录包含的是 MinGW 工具集,例如编译器 g++、链接器 ld、make 工具、打包工具 ar 等。

    QtCreator 使用 MSVC2015 编译生成的,所以安装目录里有一个 vcredist 文件夹存储 VC 运行库安装文件。

    MaintenanceTool.exe ,对于离线安装包,它只能用于删除软件包,如果 Qt 开发环境是用在线安装方式装的,这个工具还可以管理开发环境组件和升级组件

    Qt 类库的帮助文件位于 Docs 文件夹里,需要用 Qt Assistant 工具才能查看

    Examples 里是示例代码,可以用 QtCreator 集成开发环境打开各个示例。

    Qt 类库目录

    在这里插入图片描述

    Qt用到的开发工具

    Qt 不是凭空产生的,它是基于现有工具链打造而成的,它所使用的编译器、链接器、调试器等都不是自己的,Qt 官方只是开发了上层工具。下面我们分几个部分讲解 Qt 使用到的工具链。

    GNU 工具集

    在上个世纪八十年代,计算机都是奢侈品,操作系统里最著名的是 Unix 家族, 当时还没有 Windows、Linux 之类的,Unix 系统都是商业软件,里面的应用软件也是商业软件, 全是封闭的环境。

    系统程序员 Richard M. Stallman (RMS) 在此环境下创立了与众不同的 GNU 项目 (GNU’s Not Unix) , 以及推进自由软件发展的 Free Software Foundation (FSF) 自由软件基金会。

    GNU 项目是为了创建自由的类 Unix 系统,也因此开发出来很多开源的系统工具,其中非常著名的就是 GCC (GNU Compiler Collection,GNU编译器套件)。

    现在我们知道,GUN 开发类 Unix 系统的项目失败了,但是它开发的一系列工具集却用到了后来的 Linux 内核上,两者结合形成了今天的各种 Linux 发行版

    在 GNU 工具集里面,开发时常见到的几个罗列如下(这些工具通常位于 Linux 或 Unix 系统里的 /usr/bin/ 目录):

    工具说明
    gccGNU C 语言编译器
    g++GNU C++ 语言编译器。
    ldGNU 链接器,将目标文件和库文件链接起来,创建可执行程序和动态链接库。
    ar生成静态库 .a ,可以编辑和管理静态链接库。
    make生成器,可以根据 makefile 文件自动编译链接生成可执行程序或库文件。
    gdb调试器,用于调试可执行程序。
    ldd查看可执行文件依赖的共享库(扩展名 .so,也叫动态链接库)。

    MinGW

    原本 GNU 工具只在 Linux/Unix 系统里才有,随着 Windows 系统的广泛使用, 为了在 Windows 系统里可以使用 GNU 工具,诞生了 MinGW(Minimalist GNU for Windows) 项目,利用 MinGW 就可以生成 Windows 里面的 exe 程序和 dll 链接库。

    需要注意的是,MinGW 与 Linux/Unix 系统里 GNU 工具集的有些区别:

    • MinGW 里面工具带有扩展名 .exe, Linux/Unix 系统里工具通常都是没有扩展名的。
    • MinGW 里面的生成器文件名为 mingw32-make.exe,Linux/Unix 系统里就叫 make。
    • MinGW 在链接时是链接到 *.a库引用文件,生成的可执行程序运行时依赖 *.dll,而 Linux/Unix 系统里链接时和运行时都是使用*.so

    另外 MinGW 里也没有 ldd 工具,因为 Windows 不使用 .so 共享库文件。如果要查看 Windows 里可执行文件的依赖库,需要使用微软自家的 Dependency Walker 工具。Windows 里面动态库扩展名为 .dll,MinGW 可以通过 dlltool 来生成用于创建和使用动态链接库需要的文件,如 .def 和 .lib。

    MinGW 原本是用于生成 32 位程序的,随着 64 位系统流行起来, 从 MinGW 分离出来了 MinGW-w64 项目,该项目同时支持生成 64 位和 32 位程序。Qt 的 MinGW 版本库就是使用 MinGW-w64 项目里面的工具集生成的。

    如今, MinGW 现已被 MinGW-w64 所取代。感兴趣的可以阅读 win10:mingw-w64安装教程

    MSYS(Minimal SYStem)

    由于ming-gw本身主要是编译链接等工具和头文件、库文件,并不包含系统管理,文件操作之类的shell环境,这对希望用类Unix命令的开发者来说是不够用的。所以MinWG官方又推出了MSYS(Minimal SYStem),相当于是一个部署在Windows系统中的小型Unix系统环境,移植了很多Unix/Linux命令行和配置文件等,是对MinGW的扩展。

    MSYS 对于熟悉 Unix/Linux 系统环境或者要尝试学习 Unix/Linux 系统的人都是一种便利。MSYS 和 MinGW 的安装升级都是通过其官方的 mingw-get 工具实现,二者是统一下载安装管理的。

    对于 MinGW-w64 项目,它对应的小型系统环境叫 MSYS2(Minimal SYStem 2),MSYS2 是 MSYS 的衍生版,不仅支持 64 位系统和 32 位系统,还有自己的独特的软件包管理工具,它从 Arch Linux 系统里移植了 pacman 软件管理工具,所以装了 MSYS2 之后,可以直接通过 pacman 来下载安装软件,而且可以自动解决依赖关系、方便系统升级等。装了 MSYS2 之后,不需要自己去下载 MinGW-w64,可以直接用 pacman 命令安装编译链接工具和 git 工具等。

    Qt工具集

    工具说明
    qmake核心的项目构建工具,可以生成跨平台的 .pro 项目文件,并能依据不同操作系统和编译工具生成相应的 Makefile,用于构建可执行程序或链接库
    uicUser Interface Compiler,用户界面编译器,Qt 使用 XML 语法格式的 .ui 文件定义用户界面,uic 根据 .ui 文件生成用于创建用户界面的 C++ 代码头文件,比如 ui_*****.h 。
    mocMeta-Object Compiler,元对象编译器,moc 处理 C++ 头文件的类定义里面的 Q_OBJECT 宏,它会生成源代码文件,比如 moc_*****.cpp ,其中包含相应类的元对象代码,元对象代码主要用于实现 Qt 信号/槽机制、运行时类型定义、动态属性系统。
    rccResource Compiler,资源文件编译器,负责在项目构建过程中编译 .qrc 资源文件,将资源嵌入到最终的 Qt 程序里。
    qtcreator集成开发环境,包含项目生成管理、代码编辑、图形界面可视化编辑、 编译生成、程序调试、上下文帮助、版本控制系统集成等众多功能, 还支持手机和嵌入式设备的程序生成部署。
    assistantQt 助手,帮助文档浏览查询工具,Qt 库所有模块和开发工具的帮助文档、示例代码等都可以检索到,是 Qt 开发必备神器,也可用于自学 Qt。
    designerQt 设计师,专门用于可视化编辑图形用户界面(所见即所得),生成 .ui 文件用于 Qt 项目。
    linguistQt 语言家,代码里用 tr() 宏包裹的就是可翻译的字符串,开发人员可用 lupdate 命令生成项目的待翻译字符串文件 .ts,用 linguist 翻译多国语言 .ts ,翻译完成后用 lrelease 命令生成 .qm 文件,然后就可用于多国语言界面显示。
    qmlscene在 Qt 4.x 里是用 qmlviewer 进行 QML 程序的原型设计和测试,Qt 5 用 qmlscene 取代了旧的 qmlviewer。新的 qmlscene 另外还支持 Qt 5 中的新特性 scenegraph 。

    Qt卸载

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    继续下一步,确定就可以了

    展开全文
  • Qt操作百度地图

    热门讨论 2014-01-16 15:20:46
    Qt5.2实现了: (1)根据Qt中指定的中心点加载一副百度地图; (2)单击目标点进行画圆; (3)手动制定圆的半径进行画圆; (4)获取目标点的经度和纬度,返回给Qt
  • Qt实现360安全卫士9.2(再度来袭) 内附实例源码

    千次下载 热门讨论 2013-10-14 13:28:40
    继360安全卫士9.1之后,应广大爱好者要求,持续升级! 此版本包括:主界面、换肤界面、新版特性界面、关于我们界面、登录界面(36.... 资源包含所有源码、资源文件。。。 欢迎讨论、交流,欢迎批评指正,欢迎留言。...
  • Qt5类继承关系图

    千次下载 热门讨论 2014-01-29 12:21:51
    Qt5类继承关系图,对于理清Qt5框架还有有点帮助的。pdf文档只有一面,缩放比例放小一点。
  • Qt 6.2 长周期版正式发布

    千次阅读 2021-10-10 10:39:26
    我很高兴地宣布 Qt 6.2 的正式发布。 它是自我们开始迈向全新Qt主要版本以来,一直在努力的版本。Qt 6.2得益于我们为Qt 6所做的所有架构升级,并包含了Qt 5.15中几乎所有深受喜爱的附加模块。
  • Qt 5 下载与安装详解

    千次阅读 2021-06-07 17:09:39
    下载地址1:https://www.qt.io/download 下载地址2(推荐):http://download.qt.io/
  • (一)、安装 从官网中寻找Qt安装器,会发现公告上说 自5.15版本起将不再为商业版外的版本提供Qt安装器 通常这里就能卡住很多新手;因此这里提供一个6.x的镜像下载地址: ...
  • Qt安装教程(Qt 6.4)

    千次阅读 2022-05-31 09:07:22
    Qt6.4安装教程、组件介绍
  • Qt实现二维码扫描器

    千次下载 热门讨论 2013-11-22 15:56:50
    Qt实现的一个二维码扫描器,利用QZXing库进行解码。 更多信息请参考:http://blog.sina.com.cn/s/blog_a6fb6cc90101gng5.html
  • Qt控件集合下载

    千次下载 热门讨论 2017-01-09 10:04:27
    Qt 编写的小控件的集合,其中一部分为整理的开源作品,一部分为自己原创,都是一些我自己用得到的控件
  • VS2019 Qt开发环境搭建与配置

    万次阅读 多人点赞 2020-08-15 01:07:19
    windows上Qt开发环境可以使用QtCreator, 也可以使用VS + Qt, VS开发调试功能强大,本篇介绍VS2019 + Qt5.14开发环境的配置, 其它版本的类似。 VS下载链接:https://visualstudio.microsoft.com/zh-hans/vs/ VS...
  • Qt 6.0正式发布了

    万次阅读 多人点赞 2020-12-11 16:42:52
    我很高兴地宣布Qt 6.0今天正式发布。这是Qt 6这一全新系列的首个版本,是Qt的一个重要里程碑。几年前,我们开始研究最初的想法,并从那时起投入了大量精力开发新一代Qt
  • Qt官方示例Demo介绍

    千次阅读 2022-03-06 17:31:11
    Qt官方示例 作者 将狼才鲸 日期 2022-03-06 CSDN文章阅读地址: Gitee文章源码地址: Bilibili视频讲解地址(待添加):才鲸嵌入式 一、官方示例总体介绍 Qt官方示例的介绍: 参考网址: Qt Examples...
  • Qt QTreeView使用-QStandardItemModel的使用

    千次下载 热门讨论 2014-05-04 20:12:08
    具体介绍见: Qt树形控件QTreeView使用1——节点的添加删除操作: http://blog.csdn.net/czyt1988/article/details/18996407 Qt树形控件QTreeView使用2——复选框的设置: ...利用C++11的function和bind功能,实现...
  • VS2017配置QT环境(详细版)

    千次阅读 多人点赞 2021-06-13 12:16:13
    VS2017中配置QT5.12.9开发环境一:安装VS20171:二:安装Qt5.12.9三.在VS2017中配置四.在VS2017中创建QT工程 一:安装VS2017 微软官网下载地址: https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/ 蓝奏...
  • 获取下载Qt安装包,Qt源码全国网址备忘录(可不用注册,即可下载各版本Qt安装包和Qt源码包) 长期持续带来更多项目与技术分享,商ye定zhi咨询,请加QQ:21497936、微信:yangsir198808
  • 每个人需求不同,会安装不同版本的Qt,笔者本次以Qt6.2.2和Qt5.15.2为例,安装android开发环境 打开Qt的在线安装工具,对于Qt6.2.2,记得选中minGW和Android的预编译库,其他选项,请读者根据需要选择 对于Qt...
  • ROS Qt5 librviz人机交互界面开发一(配置QT环境)

    万次阅读 多人点赞 2020-03-28 16:59:21
    一,首先安装ros对qt pkg的支持 sudo apt-get install ros-melodic-qt-create sudo apt-get install ros-melodic-qt-build 这样就能通过:catkin_create_qt_pkg命令创建ros gui包了: 在src目录下创建包: catkin_...
  • Qt5开发及实例源代码

    千次下载 热门讨论 2014-06-02 16:39:42
    Qt5开发及实例完整版随书源代码.代码来源于随书光盘,正常情况下都可以直接运行,关键部分有注释。。
  • Qt 6.0正式版2020-12-08发布

    千次阅读 2020-12-09 10:54:19
    Qt 6.0正式版2020-12-08发布 链接下载online 安装工具进行在线安装: https://download.qt.io/official_releases/online_installers/ Qt也提供了源码包: https://download.qt.io/development_releases/qt/6.0/ 图...
  • 24小时学通qt编程(PDF)

    千次下载 热门讨论 2012-03-27 16:35:54
    以流行的Qt库为对象,从程序设计角度全面介绍Linux/UNIX下基于Qt的图形界面程序开发方法。全书共分5部分:第一部分——Qt基础知识,介绍Qt基本知识、面向对象程序设计、槽和信号、Qt构造块等内容。第二...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 634,843
精华内容 253,937
关键字:

qt

友情链接: NineKong.rar