摘要:
在 QML 刚刚被引入到 Qt 4 的那段时间,人们往往在讨论 Qt Quick 是不是需要一个椭圆组件。由此,人们又联想到,是不是还需要其它的形状?这种没玩没了的联想导致了一个最直接的结果:除了圆角矩形,Qt Quick 什么都没有提供,包括椭圆。如果你需要一个椭圆,那就找个图片,或者干脆自己用 ... 阅读全文
posted @ 2015-09-15 21:40
Avatarx
阅读(2621)
评论(0)
推荐(0)
摘要:
PathViewPathView是 QtQuick 中最强大的视图,同时也是最复杂的。PathView允许创建一种更灵活的视图。在这种视图中,数据项并不是方方正正,而是可以沿着任意路径布局。沿着同一布局路径,数据项的属性可以被更详细的设置,例如缩放、透明度等。使用PathView首先需要定义一个代理... 阅读全文
posted @ 2015-09-15 21:36
Avatarx
阅读(1024)
评论(0)
推荐(0)
摘要:
与Qt model/view 架构类似,在自定义用户界面中,代理扮演着重要的角色。模型中的每一个数据项都要通过一个代理向用户展示,事实上,用户看到的可视部分就是代理。每一个代理都可以访问一系列属性和附加属性。这些属性及附加属性中,有些来自于数据模型,有些则来自于视图。前者为代理提供了每一个数据项的数... 阅读全文
posted @ 2015-09-15 21:23
Avatarx
阅读(2218)
评论(0)
推荐(0)
摘要:
Repeater适用于少量的静态数据集。但是在实际应用中,数据模型往往是非常复杂的,并且数量巨大。这种情况下,Repeater并不十分适合。于是,QtQuick 提供了两个专门的视图元素:ListView和GridView。这两个元素都继承自Flickable,因此允许用户在一个很大的数据集中进行移... 阅读全文
posted @ 2015-09-15 21:00
Avatarx
阅读(1257)
评论(0)
推荐(0)
摘要:
前面的章节我们介绍过模型视图。这是一种数据和显示相分离的技术,在 Qt 中有着非常重要的地位。在 QtQuick 中,数据和显示的分离同样也是利用这种“模型-视图”技术实现的。对于每一个视图,数据元素的可视化显示交给代理完成。与 Qt/C++ 类似,QtQuick 提供了一系列预定义的模型和视图。本... 阅读全文
posted @ 2015-09-15 20:37
Avatarx
阅读(851)
评论(0)
推荐(0)
摘要:
自 QML 第一次发布已经过去一年多的时间,但在企业应用领域,QML 一直没有能够占据一定地位。很大一部分原因是,QML 缺少一些在企业应用中亟需的组件,比如按钮、菜单等。虽然移动领域,这些组件已经变得可有可无,但在桌面系统中依然不可或缺。为了解决这一问题,Qt 5.1 发布了 Qt Quick 的... 阅读全文
posted @ 2015-09-15 20:27
Avatarx
阅读(2997)
评论(0)
推荐(0)
摘要:
前面的章节中,我们看到了作为输入元素的MouseArea,用于接收鼠标的输入。下面,我们再来介绍关于键盘输入的两个元素:TextInput和TextEdit。TextInput是单行的文本输入框,支持验证器、输入掩码和显示模式等。12345678910111213141516171819202122... 阅读全文
posted @ 2015-09-15 18:54
Avatarx
阅读(555)
评论(0)
推荐(0)
摘要:
上一章我们介绍了 QML中用于定位的几种元素,被称为定位器。除了定位器,QML还提供了另外一种用于布局的机制。我们将这种机制成为锚点(anchor)。锚点允许我们灵活地设置两个元素的相对位置。它使两个元素之间形成一种类似于锚的关系,也就是两个元素之间形成一个固定点。锚点的行为类似于一种链接,它要比单... 阅读全文
posted @ 2015-09-15 18:38
Avatarx
阅读(845)
评论(0)
推荐(1)
摘要:
QML 提供了很多用于定位的元素。这些元素叫做定位器,都包含在 QtQuick 模块。这些定位器主要有Row、Column、Grid和Flow等。为了介绍定位器,我们先添加三个简单的组件用于演示:首先是RedRectangle,RedRectangle12345678import QtQuick 2... 阅读全文
posted @ 2015-09-15 17:05
Avatarx
阅读(729)
评论(0)
推荐(0)
摘要:
前面我们简单介绍了几种 QML 的基本元素。QML 可以由这些基本元素组合成一个复杂的元素,方便以后我们的重用。这种组合元素就被称为组件。组件就是一种可重用的元素。QML 提供了很多方法来创建组件。不过,本章我们只介绍一种方式:基于文件的组件。基于文件的组件将 QML 元素放置在一个单独的文件中,然... 阅读全文
posted @ 2015-09-15 16:43
Avatarx
阅读(541)
评论(0)
推荐(0)
摘要:
前面我们简单介绍了几种 QML 的基本元素。QML 可以由这些基本元素组合成一个复杂的元素,方便以后我们的重用。这种组合元素就被称为组件。组件就是一种可重用的元素。QML 提供了很多方法来创建组件。不过,本章我们只介绍一种方式:基于文件的组件。基于文件的组件将 QML 元素放置在一个单独的文件中,然... 阅读全文
posted @ 2015-09-15 16:26
Avatarx
阅读(3764)
评论(0)
推荐(0)
摘要:
QML 基本元素可以分为可视元素和不可视元素两类。可视元素(例如前面提到过的Rectangle)具有几何坐标,会在屏幕上占据一块显示区域。不可视元素(例如Timer)通常提供一种功能,这些功能可以作用于可视元素。本章我们将会集中介绍集中最基本的可视元素:Item、Rectangle、Text、Ima... 阅读全文
posted @ 2015-09-15 16:24
Avatarx
阅读(2444)
评论(0)
推荐(0)
摘要:
前面我们已经见识过 QML 文档。一个 QML 文档分为 import 和对象声明两部分。如果你要使用 Qt Quick,就需要 import QtQuick 2。QML 是一种声明语言,用于描述程序界面。QML 将用户界面分解成一块块小的元素,每一元素都由很多组件构成。QML 定义了用户界面元素的... 阅读全文
posted @ 2015-09-15 15:41
Avatarx
阅读(1440)
评论(0)
推荐(0)
摘要:
前面我们已经了解了 Qt 的一部分内容。这部分内容全部集中在 C++ 方面。也就是说,至今为止我们的程序都是使用 C++ 语言完成的。这在 Qt 5 之前的版本中是唯一的途径。不过,自从 Qt 5 开始,情况有了变化。事实上,从 Qt 4.7 开始,Qt 引入了一种声明式脚本语言,称为 QML(Qt... 阅读全文
posted @ 2015-09-15 14:56
Avatarx
阅读(1046)
评论(0)
推荐(0)
摘要:
前面我们已经详细介绍过有关线程的一些值得注意的事项。现在我们开始对线程做一些总结。有关线程,你可以做的是:在QThread子类添加信号。这是绝对安全的,并且也是正确的(前面我们已经详细介绍过,发送者的线程依附性没有关系)不应该做的是:调用moveToThread(this)函数指定连接类型:这通常意... 阅读全文
posted @ 2015-09-15 14:33
Avatarx
阅读(743)
评论(0)
推荐(0)
摘要:
前面两个章节我们从事件循环和线程类库两个角度阐述有关线程的问题。本章我们将深入线程间得交互,探讨线程和QObject之间的关系。在某种程度上,这才是多线程编程真正需要注意的问题。现在我们已经讨论过事件循环。我们说,每一个 Qt 应用程序至少有一个事件循环,就是调用了QCoreApplication:... 阅读全文
posted @ 2015-09-15 14:06
Avatarx
阅读(2126)
评论(0)
推荐(0)
摘要:
希望上一章有关事件循环的内容还没有把你绕晕。本章将重新回到有关线程的相关内容上面来。在前面的章节我们了解了有关QThread类的简单使用。不过,Qt 提供的有关线程的类可不那么简单,否则的话我们也没必要再三强调使用线程一定要万分小心,一不留神就会陷入陷阱。事实上,Qt 对线程的支持可以追溯到2000... 阅读全文
posted @ 2015-09-15 13:17
Avatarx
阅读(851)
评论(0)
推荐(0)
摘要:
前面一章我们简单介绍了如何使用QThread实现线程。现在我们开始详细介绍如何“正确”编写多线程程序。我们这里的大部分内容来自于Qt的一篇Wiki文档,有兴趣的童鞋可以去看原文。在介绍在以前,我们要认识两个术语:可重入的(Reentrant):如果多个线程可以在同一时刻调用一个类的所有函数,并且保证... 阅读全文
posted @ 2015-09-15 13:02
Avatarx
阅读(845)
评论(0)
推荐(0)
摘要:
现代的程序中,使用线程的概率应该大于进程。特别是在多核时代,随着 CPU 主频的提升,受制于发热量的限制,CPU 散热问题已经进入瓶颈,另辟蹊径地提高程序运行效率就是使用线程,充分利用多核的优势。有关线程和进程的区别已经超出了本章的范畴,我们简单提一句,一个进程可以有一个或更多线程同时运行。线程可以... 阅读全文
posted @ 2015-09-15 12:42
Avatarx
阅读(473)
评论(0)
推荐(0)
摘要:
一、引言 在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯。WIN32 API提供了许多函数使我们能够方便高效的进行进程间的通讯,通过这些函数我们可以控制不同进程间的数据交换.进程间通讯(即:同机通讯)和数据交换有多种方式:消息、共享内存、匿名(命名)管道、邮槽、Windows套接... 阅读全文
posted @ 2015-09-15 12:34
Avatarx
阅读(912)
评论(0)
推荐(1)
摘要:
上一章我们了解了有关进程的基本知识。我们将进程理解为相互独立的正在运行的程序。由于二者是相互独立的,就存在交互的可能性,也就是我们所说的进程间通信(Inter-Process Communication,IPC)。不过也正因此,我们的一些简单的交互方式,比如普通的信号槽机制等,并不适用于进程间的相互... 阅读全文
posted @ 2015-09-15 12:31
Avatarx
阅读(7058)
评论(0)
推荐(0)
摘要:
model/view 模型将数据与视图分割开来,也就是说,我们可以为不同的视图,QListView、QTableView和QTreeView提供一个数据模型,这样我们可以从不同角度来展示数据的方方面面。但是,面对变化万千的需求,Qt 预定义的几个模型是远远不能满足需要的。因此,我们还必须自定义模型。... 阅读全文
posted @ 2015-09-15 11:08
Avatarx
阅读(684)
评论(0)
推荐(0)
摘要:
从本章开始,我们将逐步了解有关自定义模型的相关内容。尽管前面我们曾经介绍过 Qt 提供的几个内置模型:QStringListModel和QFileSystemModel,但对于千变万化的需求而言,这些显然是远远不够的。于是,Qt 也允许我们对模型进行自定义。在正式开始介绍自定义模形之前,我们先来了解... 阅读全文
posted @ 2015-09-15 10:53
Avatarx
阅读(1973)
评论(0)
推荐(0)
摘要:
前面我们用了两个章节介绍了 Qt 提供的两种操作数据库的方法。显然,使用QSqlQuery的方式更灵活,功能更强大,而使用QSqlTableModel则更简单,更方便与 model/view 结合使用(数据库应用很大一部分就是以表格形式显示出来,这正是 model/view 的强项)。本章我们简单介... 阅读全文
posted @ 2015-09-15 10:42
Avatarx
阅读(12738)
评论(0)
推荐(1)
摘要:
前面几章我们了解了如何使用QNetworkAccessManager访问网络。在此基础上,我们已经实现了一个简单的查看天气的程序。在这个程序中,我们使用QNetworkAccessManager进行网络的访问,从一个网络 API 获取某个城市的当前天气状况。如果你仔细观察就会发现,即便我们没有添加任... 阅读全文
posted @ 2015-09-15 10:37
Avatarx
阅读(1042)
评论(0)
推荐(0)
摘要:
上一章我们详细了解了QStringListModel。本章我们将再来介绍另外一个内置模型:QFileSystemModel。看起来,QFileSystemModel比QStringListModel要复杂得多;事实也是如此。但是,虽然功能强大,QFileSystemModel的使用还是简单的。让我们... 阅读全文
posted @ 2015-09-15 10:33
Avatarx
阅读(5541)
评论(0)
推荐(0)
摘要:
选择是视图中常用的一个操作。在列表、树或者表格中,通过鼠标点击可以选中某一项,被选中项会变成高亮或者反色。在 Qt 中,选择也是使用了一种模型。在 model/view 架构中,这种选择模型提供了一种更通用的对选择操作的描述。对于一般应用而言,Qt 内置的选择模型已经足够,但是,Qt 还是允许你创建... 阅读全文
posted @ 2015-09-15 10:26
Avatarx
阅读(17185)
评论(0)
推荐(5)
摘要:
Qt 的绘图系统允许使用相同的 API 在屏幕和其它打印设备上进行绘制。整个绘图系统基于QPainter,QPainterDevice和QPaintEngine三个类。QPainter用来执行绘制的操作;QPaintDevice是一个二维空间的抽象,这个二维空间允许QPainter在其上面进行绘制,... 阅读全文
posted @ 2015-09-15 10:14
Avatarx
阅读(445)
评论(0)
推荐(0)
摘要:
事件(event)是由系统或者 Qt 本身在不同的时刻发出的。当用户按下鼠标、敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件。一些事件在对用户操作做出响应时发出,如键盘事件等;另一些事件则是由系统自动发出,如计时器事件。事件也就是我们通常说的“事件驱动(event drive)”程序... 阅读全文
posted @ 2015-09-15 10:08
Avatarx
阅读(296)
评论(0)
推荐(0)
摘要:
存储容器(containers)有时候也被称为集合(collections),是能够在内存中存储其它特定类型的对象,通常是一些常用的数据结构,一般是通用模板类的形式。C++ 提供了一套完整的解决方案,作为标准模板库(Standard Template Library)的组成部分,也就是常说的 STL... 阅读全文
posted @ 2015-09-15 09:55
Avatarx
阅读(774)
评论(0)
推荐(0)
摘要:
Qt 5 与 Qt 4 最大的一个区别之一是底层架构有了修改。Qt 5 引入了模块化的概念,将众多功能细分到几个模块之中。Qt 4 也有模块的概念,但是是一种很粗的划分,而 Qt 5 则更加细化。本节主要对 Qt 5 的模块进行一个简单的介绍,以便以后大家需要哪些功能的时候知道到哪个模块去寻找。Qt... 阅读全文
posted @ 2015-09-15 09:46
Avatarx
阅读(750)
评论(0)
推荐(0)
摘要:
运行嵌入式程序在嵌入式QT版本中,程序需要服务器或自己作为服务器程序。服务器程序构造的方法是构造一个QApplication::GuiServe类型的QApplication对象。或者使用-qws命令选项启动程序。Using a Single Display使用-qws选项接下来的程序可以当做客户端... 阅读全文
posted @ 2015-09-15 09:35
Avatarx
阅读(4303)
评论(0)
推荐(0)

浙公网安备 33010602011771号