05_自定义信号和槽
来源:互联网 发布:unity3d 联网 编辑:程序博客网 时间:2024/05/16 05:12
1) 信号的定义必须在signals:保留字下,并且不需要实现
2)槽的定义必须在slots:保留字下,需要实现
3)信号和槽通过QObject::connect函数连接
4)当信号被触发时,槽函数被调用需要注意的是:
1)信号和槽,是QT的拓展,所以实现信号和槽的类,必须是QObject 的子类
2)实现信号和槽的类,必须以宏Q_OBJECT开始
3)连接信号和槽,要用到SIGNAL和SLOT宏,转换函数为字符串
4)一个信号可以和多个槽连接,槽函数调用的顺序是不确定的
5)多个信号可以同时连接一个槽
6)信号可以连接信号,形成信号传导
7)信号和槽的参数应该一样多,而且类型必须相同
8)信号和槽都可以重载
9)信号和槽都可以有默认参数
10)槽函数可以像普通函数一样被调用
11)在槽函数中,调用sender可以获得信号调用者总结下:
一个类:QObject
三个宏:Q_OBJECT SIGNAL SLOT
三个保留字:signals, slots, emit
/***FileName:main.cpp*/#include "myslot.h"#include "mysignal.h" MySignal sig ;int main(int argc, char *argv[]){ QApplication a(argc, argv); MySlot slot ; QObject::connect( &sig , SIGNAL( sig() ) , &slot , SLOT(slot()) ) ; QPushButton button("button") ; QObject::connect( &button , &QPushButton::clicked , [&](){ emit sig.sig() ; } ) ; button.show( ); return a.exec();}
/***FileName:MySlot.cpp*/#pragma once#include "qobject.h"#include "MyButton.h"class MySlot:public QObject{ Q_OBJECTpublic: explicit MySlot(QObject *parent = 0):QObject(parent) {} ~MySlot() {}signals:public slots: void slot() { qDebug()<<"myslot"; }};
/***FileName:MySignal*/#include "qobject.h"#include "MyButton.h"class MySignal:public QObject{ Q_OBJECTpublic: explicit MySignal(QObject *parent = 0):QObject(parent){} ~MySignal() {}signals: void sig() ;public slots:} ;
阅读全文
0 0
- 05_自定义信号和槽
- Qt基础 06_信号和槽(二)自定义信号和槽的实例
- 自定义信号和槽
- 自定义信号和槽
- 自定义信号和槽
- qt学习_自定义信号与槽
- QT4 自定义槽和信号
- QT4 自定义槽和信号
- Qt自定义信号和槽
- ]QT4 自定义槽和信号
- Qt自定义信号和槽
- Qt自定义信号和槽
- QT 自定义信号和槽
- Qt基础 05_信号和槽(一)
- QT 自定义函数 自定义信号和槽
- QT 自定义函数 自定义信号和槽
- QT 自定义函数 自定义信号和槽
- Qt笔记_信号和槽
- Python函数-可变参数
- Windows 64位下安装Redis超详细教程
- EF应用CodeFirst模式,数据迁移的基本用法要点摘记
- PythonBasic
- BZOJ1191(HNOI2006)[超级英雄Hero]--二分图最大匹配
- 05_自定义信号和槽
- spring <context:component-scan>使用说明(转)
- 阿里负载均衡,配置中间证书问题(在starcom申请免费DV ssl)
- Golang构建简单web框架
- msm8916 dt选用规则
- 【C语言】实现一个简单SHELL应用
- C# 把数据字典表的数据自动生成为 js 键值对形式
- python lxml 安装
- QT编译出现错误 “undefined reference to ‘vtable for xxx’”