Qt 中的每个类,都有一个对应的同名头文件,其中包含其类定义。例如要使用 QApplication 类,则
需要在程序中添加" #include <QApplication>"
QApplication 类用于管理应用程序范围内的资源。其构造函数需要 main 函数的 argc 和 argv 作为参
数。
widget 被创建时都是不可见的(always created hidden)。widget 中可容纳其它 widget。
Qt 中的 widget 在有用户行为或状态改变时会 emit signal。 signal 可以和 slot 函数连接在一起
(connect),这样当有 signal 被 emit 时,对应的 slot 函数会被自动调用。
QWidget 类的构造函数需要一个 QWidget * 指针作为参数,表示其 parent widget(默认值为 0,即
不存在 parent widget)。在 parent widget 被删除时,Qt 会自动删除其所有的 child widget。
Qt 中有三种 Layout Manager 类: QHBoxLayout,QVBoxLayOut,QGridLayOut。基本模式是将
widget 添加进 LayOut,由 Layout 自动接管 widget 的尺寸和位置。
启动 Qt 程序时可以通过 -style 参数改变程序的默认显式风格。
Chapter 2 Creating Dialogs
2.1 Subclassing Dialog
Qt 中所有 dialog 的基类是 QDialog。QDialog 派生自 QWidget。
Qt 中所有定义了 signal 或 slot 的类,在其类定义的开始处都要使用 Q_OBJECT 宏。Qt 中的 signal
关键字实际上是宏定义。类似的,slots 关键字也是宏定义。
Qt 所提供的类分为若干模块:QtGui,QtNetWork,QtOpenGL,QtSql, QtSvg 和 QtXml 等。
QObject::tr() 函数将输入的字符串转换为其他语言(国际化)。对所有用户可见的字符串都使用 tr()函
数是一个良好的习惯。
Buddy:两个 widget A 和 B,若 A 拥有快捷键,当用户按下该快捷键时,程序的输入焦点自动转移
到 B 上,则称 B 是 A 的 buddy。
QWidget::close() 是一个 slot,其默认行为是使对应的 widget 隐藏不可见,但并不删除该 widget。
Layout 中可包含 widget 和其他 layout。通过嵌套使用
QHBoxLayOut、QVBoxLayOut、QGridLayOut,可以构造非常复杂的 dialog。值得注意的是:layout
manager 类并不属于 widget。实际上,它派生自 QLayout,而 QLayout 又派生自 QObject。
QWidget::sizeHint() 返回一个 widget()的理想大小(ideal size)。
emit 关键字是 Qt 特有的,用于产生 signal。
MOC(Meta-Object-Compiler): 对于所有使用了 Q_OBJECT 宏的类,在编译时都需要通过 MOC 的
处理,否则会出现链接错误。解决该错误的办法也很简单,重新执行 qmake 以更新 makefile,然后重新
编译。
2.2 Signal and Slot in Depth
Signal & Slot 机制是 Qt 的根基。
评论0