Qt 学习之路:坐标系统】的更多相关文章

Qt 学习之路 2(28):坐标系统 豆子 2012年11月25日 Qt 学习之路 2 59条评论 在经历过实际操作,以及前面一节中我们见到的那个translate()函数之后,我们可以详细了解下 Qt 的坐标系统了.泛泛而谈坐标系统,有时候会觉得枯燥无味,难以理解,好在现在我们已经有了基础. 坐标系统是由QPainter控制的.我们前面说过,QPaintDevice.QPaintEngine和QPainter是 Qt 绘制系统的三个核心类.QPainter用于进行绘制的实际操作:QPaintD…
Home / Qt 学习之路 2 / Qt 学习之路 2(10):对象模型 Qt 学习之路 2(10):对象模型  豆子  2012年9月2日  Qt 学习之路 2  45条评论 标准 C++ 对象模型在运行时效率方面卓有成效,但是在某些特定问题域下的静态特性就显得捉襟见肘.GUI 界面需要同时具有运行时的效率以及更高级别的灵活性.为了解决这一问题,Qt “扩展”了标准 C++.所谓“扩展”,实际是在使用标准 C++ 编译器编译 Qt 源程序之前,Qt 先使用一个叫做 moc(Meta Obje…
<Qt 学习之路 2>目录 <Qt 学习之路 2>目录  豆子  2012年8月23日  Qt 学习之路 2  177条评论 <Qt 学习之路 2>目录 序 Qt 前言 Hello, world! 信号槽 自定义信号槽 Qt 模块简介 MainWindow 简介 添加动作 资源文件 对象模型 布局管理器 菜单栏.工具栏和状态栏 对话框简介 对话框数据传递 标准对话框 QMessageBox 深入 Qt5 信号槽新语法 文件对话框 事件 事件的接受与忽略 event()…
Q_OBJECT:这是一个宏,凡是定义信号槽的类都必须声明这个宏. 函数tr()全名是QObject::tr(),被他处理过的字符串可以使用工具提取出来翻译成其他语言,也就是做国际化使用. 对于QT学习之路:Qt学习之路(7):创建一个对话框(上)这个程序.编译出现 invalid use of incomplete type ‘class QPushButton’ findButton->setEnabled(!text.isEmpty()); ^ In file included :, ,…
Qt 学习之路 2归档 http://www.devbean.net/2012/08/qt-study-road-2-catelog/…
  Qt学习之路_14(简易音乐播放器)   Qt学习之路_13(简易俄罗斯方块)   Qt学习之路_12(简易数据管理系统)   Qt学习之路_11(简易多文档编辑器)   Qt学习之路_10(Qt中statusBar,MessageBox和Timer的简单处理)   Qt学习之路_9(Qt中Item Widget初步探索)   Qt学习之路_8(Qt中与文件目录相关操作)   Qt学习之路_7(线性布局和网格布局初步探索)   Qt学习之路_6(Qt局域网聊天软件)   Qt学习之路_5(Q…
Qt 学习之路 2 | DevBean Tech World Qt 学习之路 2 Qt 学习之路 2 目录…
Home / Qt 学习之路 2 / Qt 学习之路 2(76):QML 和 QtQuick 2 Qt 学习之路 2(76):QML 和 QtQuick 2  豆子  2013年12月18日  Qt 学习之路 2  12条评论 前面我们已经了解了 Qt 的一部分内容.这部分内容全部集中在 C++ 方面.也就是说,至今为止我们的程序都是使用 C++ 语言完成的.这在 Qt 5 之前的版本中是唯一的途径.不过,自从 Qt 5 开始,情况有了变化.事实上,从 Qt 4.7 开始,Qt 引入了一种声明式…
Home / Qt 学习之路 2 / Qt 学习之路 2(74):线程和 QObject Qt 学习之路 2(74):线程和 QObject  豆子  2013年12月3日  Qt 学习之路 2  22条评论 前面两个章节我们从事件循环和线程类库两个角度阐述有关线程的问题.本章我们将深入线程间得交互,探讨线程和QObject之间的关系.在某种程度上,这才是多线程编程真正需要注意的问题.本文很大部分翻译自文档,如果有翻译不当的地方,以文档描述为准. 现在我们已经讨论过事件循环.我们说,每一个 Qt…
Home / Qt 学习之路 2 / Qt 学习之路 2(73):Qt 线程相关类 Qt 学习之路 2(73):Qt 线程相关类  豆子  2013年11月26日  Qt 学习之路 2  7条评论 希望上一章有关事件循环的内容还没有把你绕晕.本章将重新回到有关线程的相关内容上面来.在前面的章节我们了解了有关QThread类的简单使用.不过,Qt 提供的有关线程的类可不那么简单,否则的话我们也没必要再三强调使用线程一定要万分小心,一不留神就会陷入陷阱. 事实上,Qt 对线程的支持可以追溯到2000…
Qt 学习之路 2(72):线程和事件循环 <理解不清晰,不透彻>  --  有需求的话还需要进行专题学习  豆子  2013年11月24日  Qt 学习之路 2  34条评论 前面一章我们简单介绍了如何使用QThread实现线程.现在我们开始详细介绍如何“正确”编写多线程程序.我们这里的大部分内容来自于Qt的一篇Wiki文档,有兴趣的童鞋可以去看原文. 在介绍在以前,我们要认识两个术语: 可重入的(Reentrant):如果多个线程可以在同一时刻调用一个类的所有函数,并且保证每一次函数调用都…
Qt 学习之路 2(71):线程简介 豆子 2013年11月18日 Qt 学习之路 2 30条评论 前面我们讨论了有关进程以及进程间通讯的相关问题,现在我们开始讨论线程.事实上,现代的程序中,使用线程的概率应该大于进程.特别是在多核时代,随着 CPU 主频的提升,受制于发热量的限制,CPU 散热问题已经进入瓶颈,另辟蹊径地提高程序运行效率就是使用线程,充分利用多核的优势.有关线程和进程的区别已经超出了本章的范畴,我们简单提一句,一个进程可以有一个或更多线程同时运行.线程可以看做是“轻量级进程”,…
Qt 学习之路 2(70):进程间通信 豆子 2013年11月12日 Qt 学习之路 2 16条评论 上一章我们了解了有关进程的基本知识.我们将进程理解为相互独立的正在运行的程序.由于二者是相互独立的,就存在交互的可能性,也就是我们所说的进程间通信(Inter-Process Communication,IPC).不过也正因此,我们的一些简单的交互方式,比如普通的信号槽机制等,并不适用于进程间的相互通信.我们说过,进程是操作系统的基本调度单元,因此,进程间交互不可避免与操作系统的实现息息相关.…
Qt 学习之路 2(69):进程 豆子 2013年11月9日 Qt 学习之路 2 15条评论 进程是操作系统的基础之一.一个进程可以认为是一个正在执行的程序.我们可以把进程当做计算机运行时的一个基础单位.关于进程的讨论已经超出了本章的范畴,现在我们假定你是了解这个概念的. 在 Qt 中,我们使用QProcess来表示一个进程.这个类可以允许我们的应用程序开启一个新的外部程序,并且与这个程序进行通讯.下面我们用一个非常简单的例子开始我们本章有关进程的阐述.     //!!! Qt5 QStrin…
Qt 学习之路 2(67):访问网络(3) 豆子 2013年11月5日 Qt 学习之路 2 16条评论 上一章我们了解了如何使用我们设计的NetWorker类实现我们所需要的网络操作.本章我们将继续完善前面介绍的天气程序. 注意到我们在WeatherDetail类中有一个icon属性.到现在为止我们还没有用到这个属性.下面我们考虑如何修改我们的程序. 通过查看 OpenWeatherMap 的相关 API 我们可以发现,当我们查询天气时会附带这么一个 icon 属性.这个属性其实是网站上的一个天…
Home / Qt 学习之路 2 / Qt 学习之路 2(68):访问网络(4) Qt 学习之路 2(68):访问网络(4) 豆子 2013年11月7日 Qt 学习之路 2 19条评论 前面几章我们了解了如何使用QNetworkAccessManager 访问网络.在此基础上,我们已经实现了一个简单的查看天气的程序.在这个程序中,我们使用QNetworkAccessManager进行网络的访问,从一个网络 API 获取某个城市的当前天气状况. 如果你仔细观察就会发现,即便我们没有添加任何相关代码…
Home / Qt 学习之路 2 / Qt 学习之路 2(66):访问网络(2) Qt 学习之路 2(66):访问网络(2)  豆子  2013年10月31日  Qt 学习之路 2  27条评论 上一章我们了解了NetWorker类的简单实现.不仅如此,我们还提到了几个 C++ 开发时常用的设计模式.这些在接下来得代码中依然会用到. 现在我们先来研究下 OpenWeatherMap 的相关 API.之所以选择 OpenWeatherMap,主要是因为这个网站提供了简洁的 API 接口,非常适合示…
Home / Qt 学习之路 2 / Qt 学习之路 2(65):访问网络(1) Qt 学习之路 2(65):访问网络(1)  豆子  2013年10月11日  Qt 学习之路 2  18条评论 现在的应用程序很少有纯粹单机的.大部分为了各种目的都需要联网操作.为此,Qt 提供了自己的网络访问库,方便我们对网络资源进行访问.本章我们将介绍如何使用 Qt 进行最基本的网络访问. Qt 进行网络访问的类是QNetworkAccessManager,这是一个名字相当长的类,不过使用起来并不像它的名字一…
Home / Qt 学习之路 2 / Qt 学习之路 2(64):使用 QJsonDocument 处理 JSON Qt 学习之路 2(64):使用 QJsonDocument 处理 JSON  豆子  2013年9月23日  Qt 学习之路 2  8条评论 上一章我们了解了如何使用 QJson 处理 JSON 文档.QJson 是一个基于 Qt 的第三方库,适用于 Qt4 和 Qt5 两个版本.不过,如果你的应用仅仅需要考虑兼容 Qt5,其实已经有了内置的处理函数.Qt5 新增加了处理 JSO…
Home / Qt 学习之路 2 / Qt 学习之路 2(63):使用 QJson 处理 JSON Qt 学习之路 2(63):使用 QJson 处理 JSON  豆子  2013年9月9日  Qt 学习之路 2  19条评论 XML 曾经是各种应用的配置和传输的首选方式.但是现在 XML 遇到了一个强劲的对手:JSON.我们可以在这里看到有关 JSON 的语法.总体来说,JSON 的数据比 XML 更紧凑,在传输效率上也要优于 XML.不过 JSON 数据的层次化表达不及 XML,至少不如 X…
Home / Qt 学习之路 2 / Qt 学习之路 2(62):保存 XML Qt 学习之路 2(62):保存 XML  豆子  2013年8月26日  Qt 学习之路 2  9条评论 前面几章我们讨论了读取 XML 文档的三种方法.虽然各有千秋,但是 Qt 推荐的是使用QXmlStreamReader.与此同时,许多应用程序不仅需要读取 XML,还需要写入 XML.为此,Qt 同样提供了三种方法: 使用QXmlStreamWriter: 构造一个 DOM 树,然后掉其save()函数: 使用…
Qt 学习之路 2(61):使用 SAX 处理 XML  豆子  2013年8月13日  Qt 学习之路 2  没有评论 前面两章我们介绍了使用流和 DOM 的方式处理 XML 的相关内容,本章将介绍处理 XML 的最后一种方式:SAX.SAX 是一种读取 XML 文档的标准 API,同 DOM 类似,并不以语言为区别.Qt 的 SAX 类基于 SAX2 的 Java 实现,不过具有一些必要的名称上的转换.相比 DOM,SAX 的实现更底层因而处理起来通常更快.但是,我们前面介绍的QXmlStr…
Qt 学习之路 2(60):使用 DOM 处理 XML  豆子  2013年8月3日  Qt 学习之路 2  9条评论 DOM 是由 W3C 提出的一种处理 XML 文档的标准接口.Qt 实现了 DOM Level 2 级别的不验证读写 XML 文档的方法. 与上一章所说的流的方式不同,DOM 一次性读入整个 XML 文档,在内存中构造为一棵树(被称为 DOM 树).我们能够在这棵树上进行导航,比如移动到下一节点或者返回上一节点,也可以对这棵树进行修改,或者是直接将这颗树保存为硬盘上的一个 XM…
Qt 学习之路 2(59):使用流处理 XML 豆子 2013年7月25日 Qt 学习之路 2 18条评论 本章开始我们将了解到如何使用 Qt 处理 XML 格式的文档. XML(eXtensible Markup Language)是一种通用的文本格式,被广泛运用于数据交换和数据存储(虽然近年来 JSON 盛行,大有取代 XML 的趋势,但是对于一些已有系统和架构,比如 WebService,由于历史原因,仍旧会继续使用 XML).XML 由 World Wide Web Consortium…
Qt 学习之路 2(58):编辑数据库外键(skip) 豆子 2013年7月12日 Qt 学习之路 2 13条评论 前面几章我们介绍了如何对数据库进行操作以及如何使用图形界面展示数据库数据.本章我们将介绍如何对数据库的数据进行编辑. 当然,我们可以选择直接使用 SQL 语句进行更新,这一点同前面所说的 model/view 的编辑没有什么区别.除此之外,Qt 还为图形界面提供了更方便的展示并编辑的功能. 普通数据的编辑很简单,这里不再赘述.不过,我们通常会遇到多个表之间存在关联的情况.首先我们要…
Qt 学习之路 2(57):可视化显示数据库数据(skip) 豆子 2013年6月26日 Qt 学习之路 2 26条评论 前面我们用了两个章节介绍了 Qt 提供的两种操作数据库的方法.显然,使用QSqlQuery的方式更灵活,功能更强大,而使用QSqlTableModel则更简单,更方便与 model/view 结合使用(数据库应用很大一部分就是以表格形式显示出来,这正是 model/view 的强项).本章我们简单介绍使用QSqlTableModel显示数据的方法.当然,我们也可以选择使用QS…
Qt 学习之路 2(56):使用模型操作数据库 (okgogo: skip) 豆子 2013年6月20日 Qt 学习之路 2 13条评论 前一章我们使用 SQL 语句完成了对数据库的常规操作,包括简单的 CREATE.SELECT 等语句的使用.我们也提到过,Qt 不仅提供了这种使用 SQL 语句的方式,还提供了一种基于模型的更高级的处理方式.这种基于QSqlTableModel 的模型处理更为高级,如果对 SQL 语句不熟悉,并且不需要很多复杂的查询,这种QSqlTableModel模型基本可…
Qt 学习之路 2(54):剪贴板 豆子 2013年6月8日 Qt 学习之路 2 2条评论 剪贴板的操作经常和前面所说的拖放技术在一起使用.大家对剪贴板都很熟悉.我们可以简单地把它理解成一个数据存储池,外面的 数据可以存进去,里面数据也可以取出来.剪贴板是由操作系统维护的,所以这提供了跨应用程序的数据交互的一种方式.Qt 已经为我们封装好很多关于剪贴板的操作,我们可以在自己的应用中很容易实现对剪贴板的支持,代码实现起来也是很简单的:   class ClipboardDemo : public…
Qt 学习之路 2(53):自定义拖放数据 豆子  2013年5月26日  Qt 学习之路 2  13条评论上一章中,我们的例子使用系统提供的拖放对象QMimeData进行拖放数据的存储.比如使用QMimeData::setText()创建文本,使用QMimeData::urls()创建 URL 对象等.但是,如果你希望使用一些自定义的对象作为拖放数据,比如自定义类等等,单纯使用QMimeData可能就没有那么容易了.为了实现这种操作,我们可以从下面三种实现方式中选择一个: 将自定义数据作为QB…
Qt 学习之路 2(52):使用拖放 豆子 2013年5月21日 Qt 学习之路 2 17条评论 拖放(Drag and Drop),通常会简称为 DnD,是现代软件开发中必不可少的一项技术.它提供了一种能够在应用程序内部甚至是应用程序之间进行信息交换的机制.操作系统与应用程序之间进行的剪贴板内容的交换,也可以被认为是拖放的一部分. 拖放其实是由两部分组成的:拖动和释放.拖动是将被拖放对象进行移动,释放是将被拖放对象放下.前者是一个按下鼠标按键并移动的过程,后者是一个松开鼠标按键的过程:通常这两…