一、信号槽机制
信号槽这里主要是connect函数。这是一个有5种重载的函数,属于QObject类。
connect函数的一般形式是这样的:
- connect(sender, signal,
- receiver, slot);
sender和receiver一般是QObeject*类型。参数前都加&.
槽参数个数一般比信号参数个数少,除非槽函数是带默认参数的函数。
如何通过成员函数指针来避免槽函数的错误,还没有搞清楚。
所谓lambda表达式,就是自定义一个函数,函数形式 [ ] (返回值){ 函数体 }
Qt4中,SIGNAL 和SLOT 都是字符串,所以形式是 SIGNAL( 函数 ),SLOT(函数)
编译器不检查字符串错误,所以Qt4得程序不稳定。
二、自定义信号槽
信号槽也是可以自定义的。
这里是说,信号和槽可以换成自己定义的函数。
首先,你得有个自己定义的类。
Qt中所有的类都以QObject 为基类。所以头文件中,要有#incldue<QObject>,并公有继承。类定义开头要写Q_OBJECT。
三、Qt模块化
Qt4 和Qt5的一大区别,在于Qt5的模块划分更细。分为基础模块和扩展模块。
Qt Core和Qt Widget是两个基础模块,一个负责提供核心的非GUI功能,一个提供GUI的基本功能。其他基础模块都需要在.pro文件中添加语句才可使用。
扩展模块不做说明。
四、主窗口MainWindow简介
QMainWindow 是Qt预定义好的一个主窗口的类。主窗口是一个应用程序的最顶层窗口。由标题栏、菜单栏、工具栏、状态栏组成。在主函数中定义一个MainWindow类对象,并调用这个对象的show()函数显示窗口。
标题栏格式有操作系统决定,当然也可以自定义,但无太大必要,也不在我们讨论范围之内。
工具栏不是一个细长条,它是一个AREA,一个矩形区域。内部有停靠窗口,可以类比PS的工具栏,再内部是工作区了。
使用QMainWindow需要提前#include<QMainWindow>
pro文件
QT += core gui QT需要的两个模块,gui和 core
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets Qt版本大于5,添加Widgets模块
TARGET = qtdemo 生成的程序名
TEMPLATE = app 生成的程序所使用的模板
SOURCES += main.cpp \
mainwindow.cpp 源文件
HEADERS += mainwindow.h 头文件
pro文件会随着程序的复杂变得复杂起来
五、添加动作
动作是窗口的一个对象成员,类型是QAction*。
窗口的构造函数包括 setWindowTitle(tr(".....")),菜单栏,工具栏,和状态栏,分别调用不同的#include。
动作可以设置快捷键,图标,状态信息等,可以添加到菜单栏或工具栏中。
- #include <QAction>
- #include <QMenuBar>
- #include <QStatusBar>
- #include <QToolBar>
总结、一些类的使用方法补充
#include<QDebug>,输入输出:qDebug() <<"hello"<<name;
字符串类QString,包含在#include<QObject>中
#include<QMainWindow>,主窗口类,是QObject的子类,所以继承这个类时,一样要在定义类开头加上Q_OBJECT
#include<QAction>,动作