概述
一、自定义信号与槽
当某些条件触发时,想自动执行一些代码,这种情况就需要用到自定义信号和槽。
1、信号和槽必须是类的成员
2、自定义信号和槽的类必须继承QObject,由于QObject是所有类的源头,它们都继承了QObject,所以继承任何一个Qt中的类即可
3、在类的开头位置写 Q_Object 不需要分号
注意:此标识符必须在项目构建之前写,如果是后加入的编译时可能出现槽函数、信号找不到
解决方法:删除项目中所有自动生成的文件,然后再使用
qmake -project
qmake
make
4、信号定义在 signals:关键字下面,信号的格式相当于函数声明
5、使用 emit 命令发送信号,并且可以在发送信号时传递参数给槽函数
6、槽函数定义在 private|protected|public slots:关键词下面,可以先声明后定义,也可以直接在头文件中定义7、一个信号可以连接多个槽函数,当该信号发射时会同时触发多个槽函数
8、多个信号可以连接一个槽函数,只要其中一个信号发射就会触发槽函数
二、事件
事件是基于类多态实现的,Qt中的控件类中有一些什么都不做的虚函数,当事件发生时,会自动调用这些虚函数。
这些会被自动调用的虚函数,被称为事件函数,触发这些虚函数的行为或操作称为事件
常用事件:
// 鼠标按下事件
void mousePressEvent(QMouseEvent *);
// 鼠标弹起事件
void mouseReleaseEvent(QMouseEvent *);
// 鼠标双击事件
void mouseDoubleClickEvent(QMouseEvent *);
// 鼠标移动
void mouseMoveEvent(QMouseEvent *);
// 鼠标移入
void enterEvent(QEvent *);
// 鼠标移出
void leaveEvent(QEvent *);
QMouseEvent的button成员函数,可以获取到触发事件的鼠标按钮。
常用键盘事件:
// 键盘按下事件(方向键无效)
void keyPressEvent(QKeyEvent *);
// 键盘弹起事件
void keyReleaseEvent(QKeyEvent *);
QKeyEvent的key成员函数,可以获取按键的键值(整数),无法区别大小写。
QKeyEvent的Text成员函数,可以区分大小写,但方向键无字符。
焦点事件:
注意:只有可以编辑的控件才有该事件
// 获得焦点
void focusInEvent(QFocusEvent *);
// 失去焦点
void focusOutEvent(QFocusEvent *);
窗口事件:
// 窗口显示事件
virtual void paintEvent(QPaintEvent *);
// 窗口移动
virtual void moveEvent(QMoveEvent *);
// 大小改变事件
virtual void resizeEvent(QResizeEvent *);
// 窗口关闭事件
virtual void closeEvent(QCloseEvent *);
最后
以上就是精明玫瑰为你收集整理的Qt 自定义信号与槽 & 事件的全部内容,希望文章能够帮你解决Qt 自定义信号与槽 & 事件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复