没有合适的资源?快使用搜索试试~ 我知道了~
Qt4学习笔记(云帆作品)
需积分: 4 32 下载量 49 浏览量
2008-10-30
14:39:32
上传
评论 1
收藏 2.34MB DOC 举报
温馨提示
试读
64页
Qt4的学习笔记,转自云帆作品。Qt学习起来我感觉入门比较难。可能是因为自己没有C++基础。看到了这个学习笔记不错,和大家一起分享。希望能对大家对Qt的学习有所帮助!
资源推荐
资源详情
资源评论
学习笔记
1.1 从 Hello Qt 开始
在学习 的过程中,差不多所有的教程都从 开始,下面就是这个程序的 版本。
!"#
$%
&'''' #(
)''''*+,-,#(
.''''/0+#(
1''''23#(
45
按行解析以上 4 行代码
第一,二行:是代码中需要使用的类的头文件。在 $ 中,可以写成的格式,
当然也可写成“26。
第三行:是 函数的标准写法
第五行:创建一个 对象,管理应用程序的资源。
第六行: 对象, 是一个 提供的小控件,显示一行文本。
第七行:显示 。
第八行:23#,让程序进入消息循环。等待可能的菜单,工具条,鼠标等的
输入,进行响应。
将以上代码放到名为 2 中,保存,编译过程如下:
7/8,7 命令创建 2,是平台无关的工程文件。
在 2 所在目录下,运行 7(3)或者 7(++0)。
第 ) 行代码还可以如下替换:
*+,9,
'''''''''''''''''''''''''',:*-9:9,#(
''''''''''''''''''''''''''
这里面包含了 文本,显示的字体,颜色会改变。
实际程序中,下面两行是比不可少的。
#(
23#(
1.2 连接信号和响应函数
连接信号和响应函数
这个例子用来说明怎么响应信号,和 程序的源代码相似,原来的 用一个按钮代替,
点击时退出程序。
源程序如下:
'
';0<
' !"#
'$%
'&'''' #(
')'''';0<*+;0<,,#(
'.''''=8>>?@AB7##
'1'''''''''''''''''''''C?=D###(
'4''''/0+#(
E''''23#(
5
当有所动作或者状态改变, 的控件会发出消息(0),例如,当点击按钮时,按钮会发
送 7#消息,这个消息可以连接到一个函数上(这个函数在这里成为 0)。这样,当一
个消息发送时,0 函数可以自动执行。在这个例子中,我们连接了按钮的 7 信号和
的 函数,语法如第七,八行所示。
编译以上程序,将以上代码放在 2 文件中,保存。
依次运行
7/8
72
733#7++0#
然后运行程序,点击 按钮,程序将会中止。
'
1.3 控件的几何排列-Laying Out Widgets
在这个小节中,我们说明在一个窗口中如何排列多个控件。学习利用 0 和 0 的方法使
控件同步。程序要求用户通过 03 或者 0 输入年龄。
程序中使用了三个控件:?<3,? 和 F。F 是这个程序的主窗口。
?<3 和 ? 被放在 F 中;他们是 F 的 。反过来,我们也
可以称 F 是 ?<3 和 ? 的 。F 没有 ,因为它是程序
的顶层窗口。在 F 及其子类的构造函数中,都有一个 F参数,用来指定它们
的父控件。
源代码如下:
'
'<3G
'?
'$?<3
'& !"#
')%
'.'''' #(
'1''''F++*+F(
'4''''++/0F+D,HI,#(
E''''?<30<3*+?<3(
''''?0*+?>>J#(
''''0<3/0KEE#(
''''0/0KEE#(
$''''=8>>0<3?@AB L##
&'''''''''''''''''''''0?=D0M###(
)''''=8>>0?@AB L##
.'''''''''''''''''''''0<3?=D0M###(
1''''0<3/0M&#(
4''''<3GG*+<3G(
E''''G/F0<3#(
''''G/F0#(
''''++/0GG#(
''''++/0+#(
$''''23#(
&5
第 1,4 行建立程序的主窗口控件,设置标题。第 E 到 行创建主窗口的 ,并设置
允许值的范围。第 $ 到第 . 行是 0<3 和 0 的连接,以使之同步显示同一个年龄值。
不 管 那 个 控 件 的 值 发 生 变 化 , 都 会 发 出 L# 信 号 , 另 一 个 控 件 的
0M#函数就会为这个控件设置一个新值。
第 1 行将 0<3 的值设置为 &,这时 0<3 发出 L#信号, 的参
数值为 &,这个参数传递给 0 的 0M#函数,将 0 的值也设置为 &。同理,
0 也会发出 L#信号,触发 0<3 的 0M#函数。这个时候,
因为 0<3 的当前值就是 &,所以 0<3 不会发送任何信号,不会引起死循环。
在第 4 至 行,我们使用了一个布局管理器排列 0<3 和 0 控件。布局管理器能够
根据需要确定控件的大小和位置。 有三个主要的布局管理器:
<3G:水平排列控件。
M<3G:垂直排列控件。
AG:按矩阵方式排列控件
第 行,F>>0G#把这个布局管理器放在 ++ 上。这个语句将 0<3
和 0 的“父”设为 ++,即布局管理器所在的控件。如果一个控件由布局管理器确定它
的大小和位置,那个创建它的时候就不必指定一个明确的“父”控件。
现在,虽然我们还没有看见 0<3 和 0 控件的大小和位置,它们已经水平排列好了。
<3G 能合理安排它们。我们不用在程序中考虑控件在屏幕上的大小和位置这些头疼
的事情了,交给布局管理器就万事大吉。
在 中建立用户界面就是这样简单灵活。程序员的任务就是实例化所需要的控件,按照需要
设置它们的属性,把它们放到布局管理器中。界面中要完成任务由 的 0 和 0 完成。
第二章创建对话框(Creating Dialogs)
在这章介绍如何创建 的对话框。对话框是程序和用户交互的桥梁,提供了程序和用户之间
对话的一种方式。
很多程序都是由一个主窗口,在这个主窗口中包含一个菜单条,多个工具条,和足够多的对话
框。也有些程序本身就是一个对话框,直接相应用户的输入请求。
本章中我们首先会用代码的方式创建我们的第一个对话框,然后用 N0 工具创建对话
框。N0 是一个可视化的工具,用它可以更快的创建,修改对话框。
2.1 派生对话框类(Subclassing QDialog)
第一个例子是一个用 LOO实现的查找对话框。我们把这个对话框实现为一个类,这样它就是
一个独立的控件,并有自己的信号(0)和 0 函数
类的源代码分别放在 P2 和 P2 中。首先看 P2 的代码
::Q@BNN@=AR
PQ@BNN@=AR
N
$00L7<3(
&00(
)00H(
.00;0<(
'100QN>N
'4%
E''''R=<SHLD
>
''''QNF*E#(
00>
$'''' PB30?C0>>L0?0 G0#(
&'''' P; 00?C0>>L0?0 G0#(
) 00>
.'''' PL7#(
1'''' Q<0?C3#(
4 >
E''''(
''''HH(
''''L7<30L7<3(
''''L7<37+L7<3(
$'''';0<P<(
&'''';0<0<(
)5(
.:
一共 . 行,第 ,,. 行是为了避免头文件被多次包含。
第 行包含 N 头文件,这个类从 N 继承,N 从 F 继承。
第 $ 至 . 行是用到的 中类的前向声明。通过前向声明,编译器就知道这个类已经存在,而
不用写出包含的头文件。这个问题稍后还要讲。
第 1 至 ) 行是类 QN 的定义。
第 E 行,R=<SHLD 是一个宏定义,如果类里面用到了 0 或者 00,就要声明这个宏。
第 行,QNF*E#(构造函数是 控件类的标准格式,默认的父
参数为 BT,说明没有父控件。
第 行,0 声明了这个对话框发出的两个信号,如果选择向前查找,那么对话框就发出
P; 0#信号,否则,发出 PB3#信号。0 也是一个宏,在编译之前,LOO
预处理把它变成标准的 OO代码。>>L0?0 G 是一个枚举类型,有
>>L0?0 和 >>L0@00 两个值。
在类的私有部分,声明有两个 0 函数。为了实现这两个函数,需要用到对话框的其他控件的
信息,所以保存了一些控件的指针。0 关键字和 0 一样,也是一个宏。
对于私有成员变量,我们只是使用了它们的指针,没有对它们进行存取操作,编译器不需要知
道它们的详细定义,所以只使用了这些类的前向声明。当然,也可以使用
L7<3,等,但是,使用前向声明会让编译速度更快一些。
下面看一下 P2 源文件代码:
文件头和构造函数部分
'A
',P2,
'QN>>QNF#
'$''''>N#
'&%
')''''*+,QC+>,##(
'.''''H*+H(
'1''''/0<GH#(
'4''''0L7<3*+L7<3,UC0,##(
E''''7+L7<3*+L7<3,?C7+,##(
''''P<*+;0<,CQ,##(
''''P</0N:#(
''''P</0H:0#(
$''''0<*+;0<,L0,##(
&''''H?@AB3L0?C##
)''''''''''''0?=DQ<0?C###(
.''''P<?@AB7##
1''''''''''''0?=DPL7###(
剩余63页未读,继续阅读
资源评论
TonyRogers
- 粉丝: 2
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功