05 2010 档案

摘要: 为了检查布局结果,你可以使用Qt设计器窗体菜单上提供的预览功能,如果你想,通过预览子菜单,你甚至可以以其它的样式查看对话框。图3.8显示了Linux下的预览。奇趣定义了Plastique作为默认样式,这个样式与KDE 3的默认样式相似。在Mac OS X上,Qt用户使用原生的Aqua样式,此样式使用Mac OS X的绘图规范。同样地,Windows XP样式使用Windows APIs绘制样式。因此,Aqua样式和XP样式仅仅在各自的操作系统上可用。阅读全文
posted @ 2010-05-27 13:36 mcxiaoke 阅读(1466) | 评论 (1) 编辑
摘要: 以QObject为基础的类都有一个特定的属性,它可以使用setProperty()设置,使用property()查询。用户界面信息的例子可以用包括大小,标签,格式详情,帮助文本和很多其它的东西的属性表示。 图3.5:属性编辑器按照类第一次定义的样子(或者是类本身,或者是它的一个父类)分类显示它的每一个属性。 阅读全文
posted @ 2010-05-26 08:49 mcxiaoke 阅读(1257) | 评论 (0) 编辑
摘要: 虽然手工编写像第二章的转换器那样的简单的图形用户界面不会有太多问题,我们仍然需要一个图形界面设计工具,尤其是在设计要放置许多GUI元素的对话框时。Qt提供了Qt设计器工具。阅读全文
posted @ 2010-05-24 12:50 mcxiaoke 阅读(1545) | 评论 (0) 编辑
摘要: 在前面的例子程序中,我们在单独的一个类ByteConverterDialog中实现这个程序的图形界面和处理逻辑:如果用户改变了一个行编辑器部件里的值,ByteConverterDialog类将调用相应的槽来调整另外两个行编辑器的值。图5描述了这个流程。 像这样界面和程序逻辑结合的过于紧密带来了程序设计的风险,极不清晰而且难于维护。举例来说,如果重要的程序逻辑嵌入到负责设置布局和部件的方法中,一段时间之后决定改变程序的外观,那么负责功能的代码将不得不做出痛苦的改变。 阅读全文
posted @ 2010-05-21 09:10 mcxiaoke 阅读(1484) | 评论 (0) 编辑
摘要: 除开改良了的布局,这个对话框在下列几个方面表现的并不完美:目前窗口标题显示的是程序的名字byteConverter。一些东西可以更具描述性。退出按钮应该成为对话框的默认按钮,默认按钮即使即使当前没有键盘焦点,也可以由回车键激活。大部分窗口部件以一种特殊的样式高亮默认按钮。现在你可以在行编辑器中输入任何数字。我们应该限制用户只能输入正确的值,即十进制数字智能在0到255之间,十六进制数字最多为两位数,二进制数字最多为8位数。 我们可以通过添加下面几行解决这些问题:阅读全文
posted @ 2010-05-20 08:43 mcxiaoke 阅读(1303) | 评论 (0) 编辑
摘要: 现在你对Qt有一个大概的了解了,我们将转向更实际的例子,学习这些类如何一起工作。我们的第一个扩展程序将在十进制,十六进制和二进制标记法之间转换数字。如图2.1所示。 这个程序的使用者可以在任何一个输入框中输入任何单个字节的数字(从0到255).此程序将更新另外两个行编辑器的数字为转换后的值。阅读全文
posted @ 2010-05-19 08:56 mcxiaoke 阅读(1293) | 评论 (0) 编辑
摘要: 在Qt编程中,推荐你将HTML格式的文档作为案头必备参考,尤其因为详细描述了所有的Qt类。当阅读本书时经常查看不同的例子中使用的类对应的文档,你也可能发现用处很大。 当Qt助手启动时,程序自动载入起始页(page doc/html/index.html)[图1.18];它也可以通过任何网页浏览器查看,还有在线版本可用。除了已经提到的Qt类的精确描述,文档还包括引导教程;和信号-槽机制,布局,SQL,网络,XML,OpenGL模块的概述;以及工具和实用程序的介绍。 阅读全文
posted @ 2010-05-18 08:53 mcxiaoke 阅读(1427) | 评论 (0) 编辑
摘要: 实际上,QT不仅仅是一个巨大的程序库,而是7个程序库,还包括许多使用工具,qmake是其中的一个。 1.5.1 QT程序库 今天,术语GUI工具包代表的东西的用途不再仅仅是系统提供的那么一个小部分(GUI界面)。尤其是QT,包含了用于应用程序开发的许多方面的扩展类。其中很多类与程序图形界面相关,但也有很多类涉及到网络编程,OpenGL支持,XML开发等方面。广泛的用途依赖于QT类的平台独立性:除了很少的例外,在所有的操作系统上,所有的类都可用,并且同样的类具有同样的方法和行为。阅读全文
posted @ 2010-05-17 12:09 mcxiaoke 阅读(2167) | 评论 (7) 编辑
摘要: 1.4.1 继承自QObject的类 自动内存管理机制和信号-槽机制都要求相关的类继承QObject类。 QObject类是许多QT类的基类。所有的部件都继承自QWidget类,而QWidget类又继承自QObject。布局类也继承自QObject类,因此他们的对象也可以进入继承层次从而受益于自动内存管理。然而,作为不可视的对象,它们(布局类)并不继承自QWidget类。 其它非图形界面类也源于QObject类,例如用于轻量级进程的QThread类和通过套接字提供网络连接的QTcpSocket类。这些类的基类也是QObject,因此他们也可以使用信号-槽的通信机制。阅读全文
posted @ 2010-05-14 08:52 mcxiaoke 阅读(1378) | 评论 (3) 编辑
摘要: 迄今为止讨论的程序仅仅产生输出。但是如果我们需要处理用户输入,没有对象间通信的话我们无法做到。 许多GUI工具包使用回调函数(callback functions)或者事件监听器(event listeners)来管理对象间通信,但是QT使用信号/槽(signal/slot)机制。与回调函数相比,信号槽机制的优势在于,当两个通信对象中的任意一个被删除时,QT可以自动断开连接。这避免了出错,简化了编程。 1.3.1 简单的案例:一个信号响应一个槽 要解释清楚对象如何通过信号和槽机制通信,最容易的方法是通过一个简单的例子。考虑下面这个程序,只是显示一个简单的文本为Quit的按钮。如果用户点击这个按钮,程序就会终止。阅读全文
posted @ 2010-05-13 10:08 mcxiaoke 阅读(1308) | 评论 (0) 编辑
摘要: VS2005静态编译 (VS2008编译同理,启动相应的命令行,设置相应的目标平台,修改相应的配置文件) 1.设置VS2005的环境变量 2.设置目标平台 set QMAKESPEC=win32-msvc2005 3.修改mkspecs/win32-msvc2005目录下的配置文件qmake.conf 将下面两行: QMAKE_CFLAGS_RELEASE = -O2 -MD QMAKE_CFLAGS_DEBUG = -Zi -MDd 修改为: QMAKE_CFLAGS_RELEASE = -O2 -MT QMAKE_CFLAGS_DEBUG = -Zi -MTd (D是指dynamic,T是指static,d是指debug) 4.进入QTDIR目录,运行配置,生成Makefile文件阅读全文
posted @ 2010-05-12 16:19 mcxiaoke 阅读(4031) | 评论 (0) 编辑
摘要: 1.2.1 如何自动布置窗口部件(也可以叫控件) 为了扩展我们第一节的HelloWorld程序使它不仅仅是显示一个文本标签,而是像图1.2那样按顺序显示两个QLabel,我们使用QT的布局系统。这个系统自动安排GUI元素:包括窗口小部件和控件。类似于在印刷领域中的术语,我们称之为布局。阅读全文
posted @ 2010-05-12 10:57 mcxiaoke 阅读(642) | 评论 (2) 编辑
摘要: 遵照传统的编程书籍和教程的做法,本书也必须以一个“Hello, World!”程序开始。这个最小的QT程序,我们保存在一个名为main.cpp的文件中,只是简单的打开一个窗口 显示文本Hello,World!代码如下: 为达到这个目的,开头两行代码包含了我们将要在下面的代码中使用的QT类的头文件。在这个程序中,头文件包含了QApplication和QLabel类的接口描述。 在QT4中,每个QT类都有一个对应的头文件,以标准的.h扩展名结尾,文件名和类文件名完全一致。当你使用#include指令时,确保头文件的大小写是正确的。阅读全文
posted @ 2010-05-12 10:50 mcxiaoke 阅读(2015) | 评论 (9) 编辑