Qt5简介及Qt5基本框架

使用Qt5.x版本中的不同方面来开发应用程序,着重于新的Qt Quick的技术,提供了编写C++后端的必要内容,并扩展了QtQuick。
    本章提供了关于Qt5高层次的概述。它对开发者有效的展示了不同的应用模式并且使用Qt5对应用程序进行预演。此外,该章的目的是提供Qt5内容的广泛概述以及如何联系Qt5的创造者。

一、前言
Qt5重点
    Qt5是对非常成功的Qt4的完整补充。截止Qt4.8,Qt4已经历了7年。现在是时候做出一个 更令人称奇的工具包,Qt5主要聚焦于以下内容:
  • 出色的图形:Qt Quick2基于OpenGL(ES)来构建场景视图。重写的图形堆栈提供的图形效果与易用性在这一领域达到了从未有过的一个新高度。
  • 开发者生产力:QML和JavaScript是用于创建用户界面的主要手段。后端由C++驱动。JavaScript和C++之间的分割为前端开发人员集中精力创造漂亮的图形界面,后端的C++开发人员集中精力在稳定性、性能、延长运行时间提供了一个快速迭代
  • 跨平台移植:随着综合的Qt平台抽象,它现在可以更容易、更快地移植到一个更广泛的平台。Qt5围绕着Qt必备模块和附加组件,它允许操作系统开发人员专注于要领模块,并引出一个较小的运行时概念。
  • 开放式开发:Qt目前在Qt-Project中真正开放。发展是开放的、社区性的。

二、Qt5介绍
Qt Quick
Qt Quick是Qt5中使用的用户界面技术,Qt Quick的本身是多种技术的集合:
  • QML - 标记语言用户界面
  • JavaScript - 动态脚本语言
  • Qt C++ - 高度便携增强的C++库
    与HTML类似,QML是一种标记性语言。元素被标记在QtQuick的花括号Item{}中。它为创建用户界面、开发人员高效性、易于阅读性而设计。用户界面可以使用JavaScript代码来增强。QtQuick能够很容易使用QtC++来扩展自己的本地功能。简而言之UI被称为前端,本地部分称为后端。这可以让你从用户接口部分分割应用程序的密集计算和本地操作。
    在一个典型的项目里,前端开发使用QML/JavaScript,后端代码、系统接口则使用QtC++开发。这让界面开发人员和功能开发人员之间的有一个自然的分割。通常情况下,后台使用Qt自己的单元测试框架进行测试,导出给前端开发人员使用。
    让我们用QtQuick创建一个简单的界面,它可以展示QML语言的某些方面。最终,我们设计一个旋转风轮。
    从一个main.qml空文档开始,所有的QML文件将以.qml结尾,作为一个标记性语言(如HTML)QML文档需要一个且只有一个根元素—在例子中有相同宽度、高度(500像素)的Rectangle元素。
import QtQuick 2.0
Image {
    id: root
    source: "Images/background.png"
}
    因为QML不作任何限制,元素类型使用Image作为根元素,使用source属性作为根元素的背景图像。
 
相遇Qt5



注:
    每个元素都具有属性,例如一个图象,有width、height,还有其它属性,像source。图像元素的size属性从图像尺寸自动扣除。否则,我们就需要设置width、height属性为一些有用的像素值。
    最标准的元素都位于QtQuick 2.0模块—我们在第一行包含的import语句。
    id特殊属性是可选的,并包含一个标识符,后来在在文件的其它地方中引用这个元素。重要提示:id属性一旦被设置就不能被更改,且不能在运行时设置。使用root作为ID为根元素只是一种作者的习惯,在较大QML文档中引用最顶层元素则可以预测。
    风轮的用户界面的前景元素放置被替换为另一个图片。
 
相遇Qt5
 
    通常情况下你的用户界面将被由许多不同的元素类型,而不仅仅是Image元素,像下面这个例子:
import QtQuick 2.0
Image {
    id: root
    Image {
        id: wheel
        anchors.centerIn: parent
        source: "Images/pinwheel.png"
    }
}
    使用anchor属性放置风轮在中央位置,锚允许指定父和兄弟姐妹对象之间的几何关系。放在另一个元素的中心(anchors.centerIn: parent)。有left、right、top、bottom、centerIn,、fill、verticalCenter、horizontalCenter关系。当然,他们需要匹配,若锚在顶部元素的左侧则它没有任何意义。
    所以我们设置风轮作为背景在父窗体的中心。
 
注:
    有时候你需要精确做小的调整。这将有可能用anchors.horizontalCenterOffset或anchors.verticalCenterOffset。类似的调整属性也适用于所有其它锚。请咨询锚属性的完整列表的文档。
    将一个图像作为根矩形元素的子元素展现了一种声明式语言的一个重要概念。描述用户界面层和分组的顺序,其中最顶层(矩形)是首先绘制的,子层在包含元素的局部坐标系中绘制。
 
    为了使展现变得更有趣,我们想加上互动。想法是,当用户按下鼠标中的某处场景以便转动风轮。使用MouseArea元素。
import QtQuick 2.0
Image {
    id: root
    Image {
        id: wheel
        anchors.centerIn: parent
        source: "Images/pinwheel.png"
 
        MouseArea {
            anchors.fill: parent
            onClicked: wheel.rotation += 90
        }
    }
}
    当用户点击它里面的覆盖面积时,鼠标区域发出的信号。可以连接到这个信号来覆盖onClicked功能。在这种情况下,参考风轮图像90度旋转。
 
注: 
    这适用于每一个信号,命名为:on + SignalName(如:onClicked)。当所有属性值发生了改变时,还发出一个信号,命名为:on + PropertyName + Changed(如:onValueChanged)。
    如果一个属性改变你可以用onWithChanged观察。
    现在,风轮可以旋转,但仍然不流利。旋转属性将立即更改。我们希望,属性90度改变随着时间的改变来进行。现在动画开始发挥作用。要启用此我们使用一个动画类型调用属性的行为,它指定定义属性的行为的每一个变化。这仅是几种类型声明一个动画。
import QtQuick 2.0
Image {
    id: root
    Image {
        id: wheel
        anchors.centerIn: parent
        source: "Images/pinwheel.png"
 
        MouseArea {
            anchors.fill: parent
            onClicked: wheel.rotation += 90
        }
 
        Behavior on rotation {
            NumberAnimation {
                duration: 250
            }
        }
    }
}
    现在,每当风轮旋转改变时,将会使用NumberAnimation为250毫秒的持续时间进行动画处理。因此,每个90度的旋转将消耗250毫秒。
 
    现在,风轮看起来已经好多了。希望这可以让你更好地理解关于Qt Quick的程序是怎么工作。
 
Qt的构建模块
    Qt5包括大量的模块。一般来说一个模块是开发者使用的库。有些模块在Qt应用平台里是强制性的。他们形成了一套名为Qt的必备模块。也有很多模块都是可选的,并形成了Qt添加功能模块。大多数开发人员不需要使用它们,但很高兴知道它们为共同挑战提供了无价的解决方案。
 
三、Qt的必备模块
    Qt的必备模块强制应用在Qt启用平台里。他们提供的基础开发现代Qt5应用程序使用Qt Quick 2。
 
核心基础模块
    Qt5模块的最小集合进行QML编程。
 模块 描述
 Qt Core 使用其它模块的核心非图形类
 Qt GUI 图形用户界面(GUI)组件的基础类,包括OpenGL的。
 Qt Multimedia 处理音频、视频、广播、摄像头功能的类。
 Qt Network 使网络编程更容易,更轻便的类。
 Qt QML QML和JavaScript的类
 Qt Quick 自定义用户界面构建高度动态的应用程序的声明性框架
 Qt SQL 使用SQL集成数据库的类
 Qt Test 进行Qt应用程序和库单元测试的类
 Qt WebKit 基于WebKit2实现的一个新的QML API类。参见Qt WebKitWidgets模块。
 Qt WebKit Widgets Qt4中,WebKit1和QWidget-based类。
 Qt Widgets 用C++部件扩展Qt图形界面的类。
 
相遇Qt5
 
Qt插件
    除了必不可少的模块,Qt还提供了软件开发的附加模块,它不是发行版的一部分。以下是附加模块的一个简短的列表。
  • Qt 3D                 一组使3D图形编程更容易和详述的API。
  • Qt Bluetooth           使用蓝牙无线技术平台的C++和QML的API。
  • Qt Contacts            访问地址簿/联系人数据库的C++和QML的API。
  • Qt Location           提供了位置定位、测绘、导航、位置搜索的C++和QML的API。 NMEA的后端定位。
  • Qt Organizer           访问的组织事件(待办事项,事件等)的C++和QML的API
  • Qt Publish and Subscribe
  • Qt Sensors             访问传感器的C++和QML的API。
  • Qt Service Framework    使应用程序能够读取,浏览和订阅更改通知的C++和QML的API。
  • Qt System Info         发现系统相关的信息和功能。
  • Qt Versit             支持电子名片和的iCalendar格式
  • Qt Wayland             只有Linux。包括Qt CompositorAPI(服务器)和Wayland平台插件(客户端)
  • Qt Feedback            触觉和声音反馈给用户操作。
  • Qt JSON DB             Qt的一个无SQL对象存储。
注:
    这些模块不是发行版的一部分,取决于有多少活跃的贡献者以及如何得到测试。
 
四、支持的平台
    Qt支持多种平台。主要桌面和嵌入式平台也支持。通过Qt应用程序的抽象,如今可以则可以更容易地移植到自己的平台上。
    在一个平台上测试Qt5比较耗时。一个子平台被qt-project选中来构建参考平台。这些平台通过系统测试彻底测试,以确保最佳的质量。不过提醒你:没有代码错误是免费的。

                
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
About This Book, Unleash the power of Qt 5 with C++14Integrate useful third-party libraries such as OpenCVPackage and deploy your application on multiple platforms, Who This Book Is For, This book will appeal to developers and programmers who would like to build GUI-based applications. Knowledge of C++ is necessary and the basics of Qt would be helpful., What You Will Learn, Create stunning UIs with Qt Widget and Qt QuickDevelop powerful, cross-platform applications with the Qt frameworkDesign GUIs with the Qt Designer and build a library in it for UI previewHandle user interaction with the Qt signal/slot mechanism in C++Prepare a cross-platform project to host a third-party libraryBuild a Qt application using the OpenCV APIUse the Qt Animation framework to display stunning effectsDeploy mobile apps with Qt and embedded platforms, In Detail, Qt 5.7 is an application development framework that provides a great user experience and develops full-capability applications with Qt Widgets, QML, and even Qt 3D., This book will address challenges in successfully developing cross-platform applications with the Qt framework. Cross-platform development needs a well-organized project. Using this book, you will have a better understanding of the Qt framework and the tools to resolve serious issues such as linking, debugging, and multithreading. Your journey will start with the new Qt 5 features. Then you will explore different platforms and learn to tame them. Every chapter along the way is a logical step that you must take to master Qt. The journey will end in an application that has been tested and is ready to be shipped., Style and approach, This is an easy-to-follow yet comprehensive guide to building applications in Qt. Each chapter covers increasingly advanced topics, with subjects grouped according to their complexity as well as their usefulness. Packed with practical examples and explanations, Mastering Qt contains everything you need to take your applications to the next level.
### 回答1: Qt5是一个非常流行的跨平台应用程序框架,它提供了一系列的插件机制来扩展其功能。在Qt5中,有几个插件框架可以选择,每个框架都有其独特的优势和用途。下面我将介绍一些最好的Qt5插件框架。 1. QML - QML是Qt Quick的标准插件框架,用于创建现代化和漂亮的用户界面。它使用一种声明式语言来描述用户界面,并具有良好的动画效果和交互性。QML非常适合移动设备和嵌入式系统的UI开发,并且易于学习和使用。 2. QGraphicsView - QGraphicsView是一个强大的图形化插件框架,可用于构建复杂的图形用户界面。它提供了可扩展的视图和场景组件,可以显示可编辑和交互的图形元素。QGraphicsView适用于需要高度自定义的图形绘制和交互的应用程序。 3. Qt WebEngine - Qt WebEngine是一个基于Google Chromium的Web浏览器引擎,它提供了在Qt应用程序中嵌入Web内容的能力。使用Qt WebEngine插件框架,您可以在应用程序中显示Web页面、支持JavaScript和CSS,以及处理各种Web事件。 这些是Qt5中最好的几个插件框架,每个都有其特定的用途。选择最适合您应用程序需求的框架,将有助于您更高效地开发出功能丰富、美观和交互性强的应用程序。 ### 回答2: Qt是一种用于跨平台开发的C++框架,而Qt插件框架是其提供的一种扩展机制,用于增加、定制和共享功能。关于最好的Qt5插件框架,我认为一个很好的选择是Qt插件框架。 Qt插件框架提供了一种灵活的机制,使我们能够设计、实现和部署插件。它基于QObject类和信号槽机制,使我们能够将插件与主应用程序进行交互,并提供动态加载和卸载插件的功能。这种灵活性使得Qt插件框架非常适合构建可扩展的应用程序。 使用Qt插件框架,我们可以轻松地将新功能添加到应用程序中,而无需修改现有的代码。我们可以将应用程序划分为主应用程序和插件,每个插件都可以提供独立的功能。这种模块化的设计有助于代码的复用和维护,并且使得应用程序更易于拓展。 此外,Qt插件框架还提供了动态库的概念,使得我们可以方便地将插件打包为单独的可执行文件或共享库。这样的设计可以降低应用程序的资源占用和加载时间,同时还使得插件的部署更加方便。 综上所述,我认为Qt插件框架是目前最好的Qt5插件框架。它提供了灵活可扩展的机制,使我们能够轻松地增加、定制和共享功能。它的模块化设计有助于代码的复用和维护,同时还提供了方便的部署和加载机制。无论是对于个人开发者还是企业开发团队来说,Qt插件框架都是一个强大而简便的选择。 ### 回答3: Qt(即可适用于开发跨平台应用程序的图形用户界面框架)是一个功能强大、灵活且广泛使用的工具。Qt的插件框架提供了一种方便的方式来扩展Qt应用程序的功能,使开发人员能够轻松地将额外的功能添加到他们的应用程序中。 在Qt中,有几个用于创建插件的框架,比如Qt插件框架(Qt Plugin Framework)、Qt Extensions和Qt Service Framework等。然而,在这些框架中,Qt插件框架(Qt Plugin Framework)被广泛认为是最好的。 Qt插件框架提供了一个灵活、可扩展的机制来实现插件的加载和管理。它支持C++和QtScript编写的插件,并提供了一套丰富的API,用于插件的注册、查找和调用。 Qt插件框架具有以下几个优点: 1. 简单易用:Qt插件框架提供了一套简单的API,使得开发人员可以轻松地编写和管理插件。 2. 跨平台:Qt插件框架是基于Qt的跨平台性质开发的,因此可以在各种操作系统和平台上运行。 3. 功能丰富:Qt插件框架提供了很多有用的功能,如插件依赖管理、插件版本控制和插件权限控制等。 4. 高效性能:Qt插件框架使用动态链接库,具有优秀的性能和较小的内存占用。 5. 社区支持:Qt插件框架有着庞大的开源社区支持,可以获得丰富的文档、示例和技术支持。 总而言之,Qt插件框架是最好的Qt5插件框架,它提供了丰富的功能、简单易用的API和跨平台的特性,使得开发人员能够更加轻松地扩展和定制他们的Qt应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值