Qt 信号和槽
2016-06-02 17:26
351 查看
槽和普通c++成员函数一样只可以为虚函数,也可以被重用,可以是公有的也可以是私有的,也可以被其它的c++函数调用;
参数也是任意的
唯一不同的是本槽和信号是可以连在一起的,和c#的事件差不多。相连后每当发射这个信号后就会自动调用这个槽
connection(sender,SIGNAL(signal),receiver,SLOT(slot));
sender就发送信号的Qobject指针
receiver是槽的Qobject指针
signal和slot是只有形参的函数名。SIGNAL和SLOT宏会把它们的参数转换为相应的字符串
1.一个信号可以连接多个槽
在发射信号的时候顺序不确定
.h
.app
3.一个信号可以与另外一个信号相连
4连接可以被删除
删除所有的连接
删除指定的连接
删除两个关联对象的连接
参数也是任意的
唯一不同的是本槽和信号是可以连在一起的,和c#的事件差不多。相连后每当发射这个信号后就会自动调用这个槽
connection(sender,SIGNAL(signal),receiver,SLOT(slot));
sender就发送信号的Qobject指针
receiver是槽的Qobject指针
signal和slot是只有形参的函数名。SIGNAL和SLOT宏会把它们的参数转换为相应的字符串
1.一个信号可以连接多个槽
在发射信号的时候顺序不确定
.h
private slots: void Open1(); void Open2();
.app
myQt::myQt(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); QObject::connect(ui.btn_Open,SIGNAL(clicked()),this,SLOT(Open1())); QObject::connect(ui.btn_Open,SIGNAL(clicked()),this,SLOT(Open2())); } void myQt::Open1() { QMessageBox msg; msg.setText("Open1!"); msg.exec(); } void myQt::Open2() { QMessageBox msg; msg.setText("Open2!"); msg.exec(); }2.多个信号可以连接同一个槽
QObject::connect(ui.btn_Open,SIGNAL(clicked()),this,SLOT(Open1())); QObject::connect(ui.btn_ClickBool,SIGNAL(clicked()),this,SLOT(Open1()));
3.一个信号可以与另外一个信号相连
QObject::connect(ui.btn_Open,SIGNAL(clicked()),ui.btn_ClickBool,SLOT(click()));
4连接可以被删除
删除所有的连接
QObject::disconnect(ui.btn_Open,0,0,0); //或者 ui.btn_Open->disconnect();
删除指定的连接
QObject::disconnect(ui.btn_Open,SIGNAL(clicked()),0,0); //或者 ui.btn_Open->disconnect(SIGNAL(clicked()));
删除两个关联对象的连接
QObject::disconnect(ui.btn_Open,0,ui.btn_ClickBool,0); //或者 ui.btn_Open->disconnect(ui.btn_ClickBool);
相关文章推荐
- Qt 常用容器
- Qt5的新特性
- Qt Delgate 委托的使用
- qt和VS动态库调用心得
- QTableWidget的使用说明和增删改
- Qt TreeWidget的增删改
- Qt 线程
- Qt里面的一些细节
- QT5 动态链接库的创建和使用
- QTableView添加进度条
- QT5.6.0无法切换fcitx中文输入法问题记录
- QTableView 自定义列
- Qt 获取CPU信息
- QTableWidget的用法总结
- Qt正则表达式
- Qt简单编程--给裸体的MPlayer披件衣服变成自己的播放器
- QT实现图片按钮(用qss切割图片,或者放三张图片)
- Apollo(MQTT) 简介和源码搭建
- Qt5 窗口关闭信号的响应~
- Qt MySQL驱动安装