Qt 4 学习笔记(一)
来源:互联网 发布:大学生旅游 知乎 编辑:程序博客网 时间:2024/05/16 04:41
Chapter 1. Basic Qt
1.1 Hello QT
关键词:槽(slot),信号(signal),布局(layout),窗口部件(widget)。
(安装的方法,和过程此处省略)
使用命令行编译QT工程时:
- 1 . 进入hello目录,
qmake -project
生成一个与平台无关的项目文件hello.pro - 2 .
qmake
或者qmake hello.pro
生成一个与平台无关的makefile文件 - 3 .
make
构建该程序
1.2 Makeing Connections
QT的窗口部件通过发射(emit)信号(signal)来表明一个用户动作已经发生了或者是一个状态已经改变了。
信号有clicked(),pressed(),released(),toggled(bool)等等,信号可以与函数(槽,slot)相连接,以便在发射信号时,槽可以得到自动执行。对于每一个Qt类,都有一个与该类同名(且首字母大写)的头文件。
#include <QApplication>#include <QPushButton>int main(int argc, char *argv[]){ QApplication app(argc, argv); QPushButton *button = new QPushButton("Quit"); QObject::connect(button, SIGNAL(clicked()), &app, SLOT(quit())); button->show(); return app.exec();}
1.3 Laying Out Widgets
Qt有三个主要的布局管理器(一个弄够对其所负责窗口部件的尺寸大小和位置进行设置的对象)。
- QHBoxLayout lays out widgets horizontally from left to right
- QVBoxLayout lays out widgets vertically from top to bottom
- QGridLayout lays out widgets in a grid
1.4 Using the Reference Documentation
在UNIX下,在命令行终端使用assistant
命令,windows下可以运行Qt Assistant(推荐)。
目前为止所见过的各类之间的关系:
Chapter 2. Creating Dialogs
2.1 Subclassing QDialog
关键词:伙伴(buddy),快捷键(&),发射(emit),对话框(dialog)。
对于所有定义了信号和槽的类,在定义开始处的Q_OBJECT都是必需的。parent参数指定了它的父窗口部件。
signals,slots关键字都是宏,可以展开成C++编译程序可以处理的一种结构形式。
Qt由数个模块构成,每个模块都有自己的类库,最重要的模块有Qtcore,QtGui,QtNetwork,QtOpenGL,QtScript,QtSql,QtSwg和QtXml等。其中头文件中为构成QtCore和QtGui组成部分的所有类进行了定义。
在字符串中使用了“&”来表示快捷键如“&Find”代表使用Alt+F
快捷键激活。所谓伙伴(buddy)就是一个窗口部件,他可以在按下标签的快捷时接受焦点(focus)。
2.2 Signals and Slots in Depth
The connect() statement looks like this:
connect(sender, SIGNAL(signal), receiver, SLOT(slot));
一个信号可以连接多个槽:
- connect(slider, SIGNAL(valueChanged(int)),
spinBox, SLOT(setValue(int))); - connect(slider, SIGNAL(valueChanged(int)),
this, SLOT(updateStatusBarIndicator(int)));
- connect(slider, SIGNAL(valueChanged(int)),
多个信号可以连接同一个槽:
- connect(lcd, SIGNAL(overflow()),
this, SLOT(handleMathError())); - connect(calculator, SIGNAL(divisionByZero()),
this, SLOT(handleMathError()));
- connect(lcd, SIGNAL(overflow()),
一个信号可以连接另外一个信号:
- connect(lineEdit, SIGNAL(textChanged(const QString &)),
this, SIGNAL(updateRecord(const QString &)));
- connect(lineEdit, SIGNAL(textChanged(const QString &)),
连接可以被移除:
- disconnect(lcd, SIGNAL(overflow()),
this, SLOT(handleMathError()));
- disconnect(lcd, SIGNAL(overflow()),
2.3 Rapid Dialog Design
总结就是使用图形化界面工具设计,使用Qt designer进行设计。设计会被保存为一个名为“xxx.ui”的文件。
qmake工具会检测到该文件,并且生成适当的makefile规则来调用Qt的用户界面编译器(uic),uic工具会讲“xxx.ui”文件转换成C++并且转换结果存储在ui_gotocelldialog.h文件中(存储着窗体中的子窗口部件和布局,以及setupUi()函数)。其中开发时需要经常在一下四种模式切换:
- Edit Tab Order
- Edit Signal/Slots
- Edit Widget
- Edit Buddy
2.4 Shape-Changing Dialogs
常见的改变形状的对话框有两种:扩展对话框(extension dialog)和多页对话框(multi-page dialog)。
- 扩展对话框:通常只显示简单的外观,需要通过一个切换按键(toggle button),如,MORE,Advanced等
- 多页对话框:QTabWidget,QListWidget,QStackedWidget等。
2.5 Dynamic Dialogs
动态对话使不重新编译应用程序而可以改变窗体布局的做法成为可能。它可以在程序运行的时候使用QUiLoader类载入该文件。为了在Qt应用程序中使用QUiLoader,必须在这个应用程序的.pro文件中加入一行内容:CONFIG += uitools
。
- Qt 4 学习笔记(一)
- Qt学习笔记(一)
- QT学习笔记(一)
- Qt学习笔记(一)
- Qt学习笔记(一)
- qt学习笔记(一) qt入门
- qt学习笔记(一) qt入门
- Qt学习笔记一
- Qt学习笔记(一)
- Qt学习笔记(一)
- Qt学习笔记一
- QT学习笔记(一):QApplication class
- QT 学习笔记 (一) 环境安装
- OpenCV学习笔记(一)(Linux + Qt)
- Qt学习笔记(一)布局管理器
- QT项目 MyQQ 学习笔记(一)
- Qt学习笔记 线程(一)
- Qt学习笔记 线程(一)
- 框架学习--shiro权限管理框架基础
- netty源码分析之-SimpleChannelInboundHandler与ChannelInboundHandlerAdapter详解(9)
- linux crontab命令 定时运行thinkphp链接 404 Not Found
- 【K-D树 在限制条件下求最近欧几里德距离】HDU
- HTML5 移动端 视口的相关问题
- Qt 4 学习笔记(一)
- poj 3280Cheapest Palindrome
- 设计模式的艺术之道--抽象工厂模式
- Spring
- SSH与SSM学习之SSH实现CRM练习17——添加客户拜访记录和列表
- Shell脚本基础知识详细介绍
- python3.6 使用 pymysql 连接 Mysql 数据库及 简单的增删改查操作
- 解决Linux下同时使用有线和无线网络时,网络连接的优先级问题
- lua中 迭代器