QT的概念、基本操作和常见面试题
QT的概念、基本操作和常见面试题
概念
QT编译过程
基本操作
信号与槽
信号槽指的是信号函数和槽函数,这是Qt在C++的基础上新增的特性,可以非常容易地实现Qt对象之间的通信。
实际上信号槽就是一种代码上的“约定”,在代码编写时指定某种前提条件和达到条件需要执行的代码,在代码运行中如果触发的前提条件就执行预设的代码,如果没有触发前提条件就不执行预设的代码。
使用信号槽需要有两个先决条件:
● 通信的对象必须是继承自QObject类,QObject类是Qt所有类型的基类。
● 类中要有Q_OBJECT宏
信号函数与槽函数的使用,需要建立连接,连接函数如下所示。
QObject::connect(const QObject * sender, const char * signal, const QObject * receiver, const char * method)[static]
/*
参数1:发射者,是前提条件中名词对应的对象。
参数2:信号函数,是前提条件中动词对应的函数,此函数属于发射者所有,信号函数通常使用过去时。信号函数需要使用SIGNAL()包裹。
参数3:接收者,是达到条件后执行代码的主体,也是名词对应的对象。
参数4:槽函数,是达到条件后执行动作对应动词函数,此函数属于接收者所有,槽函数通常使用现在时。槽函数需要使用SLOT()包裹。
*/
信号与槽的连接分为三类:
自带信号
分析:发射者——按钮对象
信号函数——clicked函数
接收者——窗口对象
槽函数——close函数
【例子】点击按钮,关闭窗口。
自带信号→自定义槽
实际开发过程中,触发的代码功能繁多,Qt源代码不可能囊括所有的情况,因此槽函数可以自定义,这是使用的最多的是一种方式。
槽函数本质是一种特殊的成员函数。
【例子】点击按钮,向右且向下移动窗口,并输出当前窗口的位置坐标。
自定义信号
定义信号主要用于后续一些相对复杂的特殊情况,
【例子】点击按钮,关闭窗口。
定时器
QObject
TimeId = startTimer();
/*
间隔时间,事件函数,返回TimeId
*/
killTimer();
/*
TimeId
*/
QTimer
QTimer();
start、stop和singleShot(可单次)
文件操作
QMainwindow下可以对文件操作