自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 资源 (9)
  • 收藏
  • 关注

原创 Qt Quick Controls模块之ApplicationWindow

ApplicationWindow在上一章中,我们介绍了Qt Quick中常用的基础组件,它们都属于QtQuick模块。从Qt5.7开始,Qt Quick引入了Qt Quick Controls模块,该模块提供了一组控件,用于在Qt Quick中构建完整的用户界面。如Button、CheckBox、ComboBox、Dialog、ProgressBar等等。想要在QML中使用该模块,需要在文件中声明:import QtQuick.Controls。与QtQuick模块中的Window类型类似,Qt

2022-01-16 21:46:50 679

原创 QML组件之MouseArea

MouseArea继承于Item且本身不可见,它通常与可见组件结合使用,以便为指定的组件提供鼠标操作的功能。尽管MouseArea拥有visible属性,不过该属性与组件是否可见并没有关系。当visible属性值为false时,表示忽略该鼠标区域的鼠标事件,类似enabled属性设置为false。

2022-01-16 14:18:07 1994

原创 QML之Item组件

`Item`是Qt Quick中所有可视组件的基本类型,Qt Quick中的所有可视组件都继承于`Item`。尽管`Item`本身不可见,但它定义了所有可视组件的通用属性,如坐标、宽高、锚定关系、事件处理等等。

2022-01-08 21:01:47 2510

原创 QML之TextEdit组件

TextEdit组件与TextInput类似,不过它支持用户输入多行文本,甚至可以通过textFormat属性支持富文本或者Markdown格式的文本内容。

2022-01-08 19:52:32 1161

原创 QML之TextInput组件

TextInput组件用于显示一个可输入的单行文本框,并可以通过validator、inputMask或echoMode属性为其设置输入限制,还可以使用font属性设置输入的文本样式,它甚至还支持一些方法,如复制、粘贴、全选等。

2022-01-08 19:49:36 3330

原创 QML之Image组件

Image组件通过source属性显示指定图片的路径,支持位图格式(如jpg和png)和矢量图格式(如svg)。它可以来自于本地文件系统,也可以来自于网络图片。

2022-01-08 19:45:32 3286

原创 QML之Text组件

Text组件用于在场景中显示一串文本,该文本可以指定颜色、字体、大小、样式、对齐方式等一系列属性。

2022-01-08 19:36:30 573

原创 QML之Rectangle组件

QML提供了很多基础的图形化组件,比如Rectangle、Text、Image、TextInput、TextEdit、Shape等,它们都继承于根组件Item。使用它们需要导入QtQuick模块:import QtQuick。

2022-01-08 19:34:33 1898

原创 QML与ECMAScript

QML提供了为编写QML应用程序而量身定制的JavaScript环境。此环境不同于浏览器提供的主机环境或服务器端JavaScript环境(如Node.js)。比如它不提供浏览器环境中常见的窗口对象或DOM接口。目前,QML运行时实现了ECMAScript语言规范标准的第七版,即ES7。其实相对于传统的JavaScript,从ES5开始就引入了非常多的实用功能。本节只是简单的介绍一下ES5/ES6/ES7在QML里的常用功能,更多用法请参考ES官方文档。

2022-01-08 19:20:41 982

原创 QML对象属性

每个QML对象类型都有一些属性。当创建对象类型的实例时,这些属性就会被自动创建出来。您甚至可以定义一些自己的属性。除枚举属性外,所有属性都以小写字母或下划线开头,并且不能包含字母,数字和下划线以外的字符。

2022-01-08 19:14:43 665

原创 QML数据类型

QML默认支持一些基本类型,使用它们时不需要import语句。下面是QML语言提供的基本类型:

2022-01-08 19:08:38 1592

原创 Qt 6介绍

作为一个跨平台的框架,Qt需要适应那些不断变化的需求。在Qt5的生命周期内,它已经设法很好地适应了其中的许多要求。然而在Qt5系列中为了保持完整的源代码和二进制兼容性使得某些问题在其生命周期内无法修复。如今有了Qt6便有机会进行更改并重新构建Qt,以适应未来几年的发展。Qt6延续了Qt5系列中所做的工作,因此不会对现有用户造成干扰。Qt6的目标是与Qt5系列有很大程度的兼容性,所以在开发Qt5.14和Qt5.15 LTS版本的时候,就已经将Qt6的一些功能以略微简化的形式引入其中。

2022-01-08 18:50:27 9487

原创 QML入门

QML是一种用户界面标记语言,文件格式以.qml结尾。语法类似CSS,同时支持JavaScript逻辑控制,并且可以与C++进行交互。import在QML文件中可能存在一个或多个导入。导入可以是以下任一项:已注册并具有版本号和命名空间的类型。一个包含类型定义的相对目录。一个JavaScript文件。导入JavaScript文件时必须对其进行限定,以便可以访问它提供的属性和方法。各种导入的通用形式如下: import Namespace VersionMajor.VersionMin

2020-12-31 10:03:18 421 2

原创 Qt Creator介绍

Qt Creator是Qt为应用程序开发人员提供的一个跨平台集成开发环境,可运行于Windows、Linux和MacOS操作系统。使用Qt Creator开发的应用程序可以部署到电脑、嵌入式、移动操作系统或Web浏览器。Qt Creator为应用程序开发人员提供了整个应用程序开发生命周期中所需的各种工具,如管理项目、设计用户界面、编码、构建、运行、测试和调试等。另外,它还为开发人员提供了示例程序、教学课程、帮助文档和Marketplace等。如下图所示:使用Qt Creator创建工程首先,打开Qt

2020-12-31 10:01:12 2448

原创 安装Qt 6

1. 创建一个Qt帐号在浏览器里打开网址https://login.qt.io/register,创建一个Qt帐号。使用该帐号可以登录Qt网站以管理您的许可证,还可以访问Qt的论坛、wiki、bugreports、codereview和支持中心。2. 下载Qt在线安装程序在浏览器里打开网址https://www.qt.io/download,下载Qt在线安装程序(Qt Online Installer)。使用在线安装程序,您可以安装Qt的商业版本或开源版本,开发工具以及其他组件。在线安装程序需要您的Q

2020-12-31 09:50:00 528 3

原创 关于Qt

QtQt是一种基于C++的跨平台应用程序开发框架。既可以开发GUI应用程序,也可以开发非GUI应用程序。它可以运行在各种软件和硬件平台上,如Windows、Linux、MacOS、Android、iOS、国产操作系统以及嵌入式操作系统等。为全球70多个行业和数百万种设备应用程序提供动力。Qt 历史1990年夏天,挪威程序员Haavard Nord和Eirik Chambe-Eng需要共同开发一个用于超声波图像方面的C++数据库应用程序。该程序必须在Unix,Macintosh和Windows上都能运行

2020-12-26 20:30:19 261

翻译 《Qt MOOC系列教程》第五章第六节:QML分析器

该教程已接近尾声,最后让我们再来讨论一下QML分析器。它是一种用于定位应用程序中性能问题的工具,如速度慢、不响应、界面不流畅等。典型的原因包括在较低的帧率中执行过多的JavaScript。在GUI线程继续之前,所有JavaScript必须返回,如果GUI线程没有准备好,则帧就会延迟或丢弃。导致类似性能问题的另一个典型原因是创建、绘制或更新不可见项,这在GUI线程中也需要花费时间。执行耗时的C++函数,如绘图方法和信号处理程序,在GUI线程中也会花费一些时间,但是QML 分析器很难捕获到它们,因为它不能解

2020-12-20 16:08:48 440

翻译 《Qt MOOC系列教程》第五章第五节:场景图项目

Qt Quick 2使用专用场景图进行渲染。使用场景图而不是传统的命令式绘图系统(QPainter或类似的系统)进行绘图,意味着要渲染的场景可以在帧之间进行保留,并且在开始渲染之前就已经了知道要渲染的完整原语集。也意味着开启了很多的优化空间,比如批量渲染以最小化状态更改和丢弃模糊的原语。假设一个用户界面是包含10个项目的列表,其中每个项目都有一个背景色、一个图标和一个文本。如果使用传统的绘图技术,就需要30次绘制调用和类似数量的状态更改。而如果使用场景图重新组织原语,可以在一次调用中绘制所有背景,然后是所

2020-12-20 15:50:27 300

翻译 《Qt MOOC系列教程》第五章第四节:QML中的C++模型

我们已经多次讨论过如何创建自己的模型来表示QML中的数据,并且在上一节中我们看到了QStandardItemModel的基本示例。通常,出于性能和功能方面的原因,需要从一开始就要实现自己的模型。QAbstactItemModel类为项目模型类提供了抽象接口,并且它可以被子类化以创建您自己的模型。QAbstractListModel和QAbstractTableModel继承了QAbstractItemModel,可以在创建列表或表格模型时将其子类化。在这一节中,我们将进一步介绍QAbstractTableM

2020-12-20 15:48:01 479

翻译 《Qt MOOC系列教程》第五章第三节:创建新的QML类型

到目前为止,我们已经讨论了如何将对象实例公开给QML上下文。有时我们还希望在QML中可以使用注册类本身。注册允许将类当作QML中的数据类型来使用。此外,注册还可以提供其他功能,比如允许在QML中将类用作可实例化的QML对象类型,或者允许在QML中导入和使用类的单例实例。通常我们使用Q_OBJECT宏注册从QObject派生的类,也可以用Q_GADGET宏声明一个比QObject“更轻”的版本。在这些更轻的类中,我们可以访问它们的属性、枚举和可调用的方法,但不能使用信号槽系统,我们稍后会进行介绍。1. 注

2020-12-20 15:44:52 777

翻译 《Qt MOOC系列教程》第五章第二节:从QML访问C++

我们已经在上一节看到了使用上下文属性将C++对象暴露给QML的简单示例。在本节中,我们将通过在QML中使用C++对象的各种方式来讨论更多的细节,以及在C++端有哪些要求。当使用setContextProperty公开QObject实例时,可以从QML访问对象的属性、信号、槽、用Q_INVOKABLE标记的方法和用Q_ENUM注册的枚举。让我们看一个例子。// simpleclass.h#include <QObject>#include <QColor>class Sim

2020-12-20 15:42:40 261 1

翻译 《Qt MOOC系列教程》第五章第一节:QML上下文属性和对象

我们在第五章将学习如何集成C++和QML。大多数情况下,这意味着从QML访问C++,它是我们要介绍的重点。不过您也可以从C++访问QML对象,但通常这不是您想要做的,可能出于测试的目的除外,所以我们不在这里深入讨论。C++和QML之间的所有通信都是通过Qt元对象系统进行的。可以使用信号槽连接可以访问和修改属性QML可以调用C++中被Q_INVOKABLE标记的槽和方法QML可以访问被Q_ENUM注册的枚举1. QML上下文C++对象和值可以使用上下文属性和上下文对象直接嵌入到加载的QML对

2020-12-20 15:40:21 741 2

翻译 《Qt MOOC系列教程》第四章第四节:委托

委托用于充当实例化视图中的可视项模板。模型提供的数据角色绑定到可视项属性,例如Text.text或Image.source属性。只要为角色分配新值,委托就会更新绑定到角色的数据。模型则会通知所有视图数据值的更改。在下面的例子中,我们有一个TeamDelegate,它会在单击时更新绑定的数据:ListModel { id: teamModel ListElement { teamName: "Team C++" teamColor: "blue" }

2020-12-17 20:09:32 384

翻译 《Qt MOOC系列教程》第四章第三节:视图

QML提供了四种常用的动态视图类型:ListView,GridView,TableView和PathView。前三个都继承于Flickable类型,这样用户就可以在水平或垂直方向滑动内容。注意,Qt Quick Controls 1中也有一个TableView类型,我们不推荐使用该类型,这里也不做介绍。使用PathView可以以任意路径形状组织数据项。每个视图都可以使用上一节中介绍的QML模型,然后在UI中设置委托项。QML中的所有模型都是列表。TableView是唯一可以直接显示C++表格模型中多个列的

2020-12-17 20:07:56 228

翻译 《Qt MOOC系列教程》第四章第二节:模型视图框架

除了ListModel之外,还有其他几种QML模型类型。如XmlistModel,使用它可以从XML数据源构造模型,它提供了一种非常方便的方法来解析XML数据。ObjectModel附带了要在视图中使用的可视项,它不需要委托,因为模型本身已经包含了可视项。DelegateModel在使用QAbstractItemModel索引访问数据项的情况下非常有用,典型的用例是层次树模型,用户可以在子树上下导航。您甚至可以把对象实例当作model。在这种情况下,对象属性就是角色名称,如以下示例所示。Text {

2020-12-17 20:06:08 209

翻译 《Qt MOOC系列教程》第四章第一节:模型视图框架

许多应用程序需要向用户显示数据,甚至允许用户操作和创建新数据。Qt模型视图框架可以使开发人员轻松地创建这样的应用程序。模型与视图的分离,可以使多个视图共享同一个模型,或者动态地更改一个视图模型。Model是数据及其结构的适配器。实际数据可能存储在任何地方,例如数据库或云上的数据中心。在一般情况下,模型本身也可以包含数据。QML有几种用于创建模型的类型,但如果想获得更高的效率请使用QAbstractItemModel的子类。View可以以任何可视结构显示数据,如列表、表格或路径。有用于堆栈项目的Sta

2020-12-17 19:58:48 211

翻译 《Qt MOOC系列教程》第三章第十一节:视觉效果

Qt Quick和QML为开发人员提供了多种方式来为用户界面添加视觉效果。Qt Quick Shapes允许您创建各种形状并填充图案。QML有大量的动画类型,这使得使用甚至非线性时间轴来设置任何对象的动画都很容易。OpenGL程序可以很容易地创建渐变或渐变阴影。让我们来看看如何在应用程序中添加视觉效果。1. 形状Shape类型,用于渲染任意形状(与我们已经看到的Rectangle类型相反)。Shape通过QPainterPath手动三角剖分生成几何形状然后使用GPU来进行渲染。这种方法不同于通过QQ

2020-12-17 19:55:26 519

翻译 《Qt MOOC系列教程》第三章第十节:自定义组件

1. 关于属性的更多信息在介绍本节的实际内容“自定义组件”之前,我们先对在第三章第二节中介绍的QML属性系统进行一些扩展。1.1 默认关键字在介绍属性时,您可能看到了这样的语法:[default] property <propertyType> <propertyName>它用于在QML中定义属性。然而在第三章第二节中,我们并没有解释过可选关键字default的用途。现在我们来讨论一下这个话题。声明对象时可以有一个唯一的default属性。如果一个对象是在另一个对象的定

2020-12-17 19:53:19 164

翻译 《Qt MOOC系列教程》第三章第九节:Qt Quick Controls

Qt Quick Controls提供了现成的UI控件,它使得您可以更快地进行工作,因为您不必从头开始实现所有的控件。例如ApplicationWindow提供了一个带有页眉、页脚、菜单栏和弹出窗口的QQuickWindow。其中的窗口可以包含视图、容器和控件的布局。请注意,当我们在本课程中谈到Qt Quick Controls时,指的是Qt Quick Controls 2。如果您查看Qt文档,您可能还会发现关于Qt Quick Controls 1的信息。它们在将来会被弃用,您应该避免使用它们。1

2020-12-09 17:30:43 474

翻译 《Qt MOOC系列教程》第三章第八节:锚定布局

1. 锚定除了传统的Grid,Row和Column布局,Qt Quick还提供了锚定布局。每个项目都有7条不可见的“锚线”:左,水平居中,右,顶部,垂直居中,基线和底部。基线(上图未显示)对应于文本所在的假想线。对于没有文本的项目,它与顶部相同。Qt Quick锚定系统允许您定义不同项目的锚定线之间的关系。例如,您可以编写:Rectangle { id: rect1; ... }Rectangle { id: rect2; anchors.left: rect1.right; ... }本例

2020-12-07 19:55:41 484

翻译 《Qt MOOC系列教程》第三章第七节:定位器

定位器项是在声明性用户界面中管理项位置的容器项。使用定位器可以轻松的实现在一个规则的布局中排版多个项目。Qt Quick Layouts也可以用于在用户界面中排列Qt Quick项。它们用于管理声明性用户界面上项的位置和大小,非常适合于可调整大小的用户界面。1. Row, Column, Grid, Flow1.1 Row将它的子元素排成一行。Row用于水平排列项目。下面的示例使用Row在外部彩色Rectangle定义的区域中排列三个带有圆角的Rectangle。spacing属性用于设置矩形

2020-12-07 19:29:54 191

翻译 《Qt MOOC系列教程》第三章第六节:输入处理器

Qt Quick有多种类型可以处理触摸事件,例如我们在上一节中使用的MouseArea,另外还有PinchArea、MultiPointTouchArea和Flickable。上面这些项都存在一些问题。比如MouseArea,Qt只是假设有一个鼠标,对于QMouseEvent和QTouchEvent在Qt Quick中都被认为是的相同事件。这就导致您不能同时与两个MouseArea或Flickable进行交互。对于我们之前使用的MouseArea就意味着您不能同时按下两个按钮或同时拖动两个滑块。也意味着您

2020-12-07 19:25:27 249

翻译 《Qt MOOC系列教程》第三章第五节:鼠标处理

Qt可以处理不同输入设备的输入,如触摸屏,鼠标等。基本上有两种不同的方法来处理输入事件。一种是区域类型,它可以处理来自任意数量设备的输入和输入处理器。在本章中,我们将介绍鼠标处理类型MouseArea。下一章将讨论一般的输入处理器。1. MouseArea我们可以使用MouseArea来启用鼠标与元素的交互。它是一个不可见的矩形项,可以像下面这样嵌套到元素中来捕捉鼠标事件:Rectangle { width: 100; height: 100 color: "green"

2020-12-05 17:09:01 250

翻译 《Qt MOOC系列教程》第三章第四节:文本输入与按键处理

1. 焦点为了让对象接收键盘事件,它需要获取焦点。本节我们关注的是文本输入,但任何项目都可以有焦点,从而响应输入,无论是通过键盘还是其他地方。最简单的,如果需要让一个项目获取焦点,可以通过设置focus属性为true来实现。例如:Rectangle { color: "lightsteelblue"; width: 240; height: 25 Text { id: myText } Item { id: keyHandler focus: t

2020-12-04 17:45:04 353

翻译 《Qt MOOC系列教程》第三章第三节:QML基本类型

1. Qt对象Qt作为QML的类型为其提供了一个全局对象,用于引用Qt中的枚举和函数。如果要使用它,可以直接使用Qt对象调用全局的成员。例如:import QtQuick 2.0Text { color: Qt.rgba(1, 0, 0, 1) text: Qt.md5("hello, world")}请参阅有关Qt QML类型的文档,以及其提供的所有内容。2. RectangleRectangle类型用于用纯色或渐变色填充区域或提供矩形边框。Rectangle要么使用实

2020-12-04 17:42:34 266

翻译 《Qt MOOC系列教程》第三章第二节:QML类型和属性

在本章的开始部分,我们先对QML类型和代码的结构进行简单的介绍。之后,我们将讨论QML对象属性和QObject属性。1. QML类型和结构QML类型是标记语言中的结构,它们表示可视化和非可视化部分。非可视QML类型包括状态(states)、转换(transitions)、模型(models)、路径(paths)、渐变(gradients)和计时器(timers)等。Qt Quick中的所有可视项都继承自Item,但它本身并不是可见的。使用Item作为顶层QML对象(作为组件的根项目)不会产生视觉效果。

2020-11-30 19:44:01 404

翻译 《Qt MOOC系列教程》第三章第一节:QML介绍

我们在前面两章主要介绍了Qt基本模块,它几乎可以用于任何Qt应用程序中,无论该应用程序多么简单或复杂。我们讨论了应用程序逻辑,实现应用程序行为的引擎。然而除了逻辑之外,我们通常还需要创建一个用户界面来与引擎交互,最好是具有一个酷炫且现代化的用户界面。在第三章,我们将讨论使用Qt Quick创建用户界面。我们将使用的编程语言是声明式脚本语言QML,它扩展了JavaScript。虽然可以用JavaScript实现应用程序逻辑,但首选的方法是使用QML和JavaScript来声明UI组件、布局和动画,使用C++

2020-11-30 19:41:51 393

翻译 《Qt MOOC系列教程》第二章第四节:父子关系

1. 对象树QObject将自己组织在对象树中。当您以一个对象作为父对象创建QObject时,该对象将被添加到父对象的children()列表中,并在父对象被删除时删除。事实证明,这种方法非常适合GUI编程。例如,QShortcut(键盘快捷方式)是相关窗口的子对象,因此当用户关闭该窗口时,快捷方式也会被删除。QQuickItem是Qt Quick模块的基本可视化元素,我们将在本课程的后面部分讨论它,它继承于QObject,但有一个可视化父元素的概念,它与QObject父元素不同。一个可视化元素不一定与

2020-11-29 11:44:42 157

翻译 《Qt MOOC系列教程》第二章第三节:多任务处理

在基于事件的系统中,保持GUI线程的响应并在工作线程中完成所有耗时的任务是很重要的。耗时的任务可能只需要几十毫秒,也可能会执行无限循环。在任何情况下,阻塞函数都不应该延迟GUI线程中的事件处理。1. QThreadQThread是一个以平台无关的方式管理线程的类。线程本身是特定于平台的内核对象。QThread提供了一个API,通过一个平台无关的枚举来设置优先级——setPriority(QThread::priority),启动线程——start(QThread::priority),退出线程事件循环—

2020-11-25 21:44:09 407

翻译 《Qt MOOC系列教程》第二章第二节:对象通信:信号和槽

几乎所有的UI工具包都有一种机制来检测用户操作,并对该操作做出响应。其中一些使用回调,另一些使用监听器,但基本上,所有这些都是受观察者模式的启发。观察者模式用于观察对象想要通知其他观察者对象状态变化的情况。下面是一些具体的例子:用户单击了一个按钮,应该会显示一个菜单。一个Web页面刚刚加载完毕,一个进程应该从这个加载的页面中提取一些信息。一个用户正在滚动一个项目列表(例如在一个app store),并到达了终点,所以其他项目应该被加载。观察者模式在GUI应用程序中随处可见,并且常常导致一些样板

2020-11-25 21:40:42 297

C++到Java到C#.pdf

从C++到Java到C#.pdf 总结这3门语言的异同点。

2014-04-23

彻底搞定C语言指针详解(整理后).doc

彻底搞定C语言指针详解(整理后).doc

2012-04-28

C++的static关键字.doc

C++的static关键字.doc 搞不清c++的static关键字的用法的可以看看

2012-04-28

C++编程思想.chm

C++编程思想.chm 不用介绍了 c++的圣经 保证可以打开!

2012-04-28

提高c或c++编程能力 .doc

提高c或c++编程能力 .doc

2012-04-28

C++经典程序100例.doc

C++经典程序100例.doc 对c++的初学者很有帮助

2012-04-28

C++语言经典算法.chm

C++语言经典算法.chm 想学习c++算法的可以看看

2012-04-28

C++ 网络编程.pdf

C++ 网络编程 想学习c++网络编程的可以看看

2012-04-28

c和c++中NULL和0的区别

c和c++中NULL和0的区别

2012-04-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除