Qt学习笔记 信号和槽

简介:

槽和普通c++成员函数一样只可以为虚函数,也可以被重用,可以是公有的也可以是私有的,也可以被其它的c++函数调用;

参数也是任意的

唯一不同的是本槽和信号是可以连在一起的,和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);

 

要把信号成功的连接到槽(或者是连接到另外一个信号),它们的参数必须具有相同的顺序和相同的类型。

这里有个例外,如果信号的参数比它所连接的槽的参数多,那么多余的参数将会被忽略

 本文转自lpxxn博客园博客,原文链接:http://www.cnblogs.com/li-peng/p/3650682.html,如需转载请自行联系原作者

目录
打赏
0
0
0
0
66
分享
相关文章
|
6月前
|
(9)Qt中信号与槽重载的解决方案
本文介绍了在Qt中处理信号与槽重载问题的三种解决方案:使用函数指针、Qt提供的QOverload类和Qt4的宏方式。
275 3
|
6月前
(8)Qt中的自定义信号
本文介绍了如何在Qt框架中创建和使用自定义信号,并通过一个父子窗口切换的示例来展示自定义信号的实现和应用。
238 3
|
4月前
|
第四问:QT中信号和槽原理
Qt的信号与槽机制是观察者模式的典型实现,允许对象间通信而不直接依赖。信号用于通知事件发生,槽是响应信号的函数,通过`QObject::connect()`连接。这种机制实现了松耦合、灵活扩展和自动通知,适用于UI更新和数据绑定等场景。
144 1
|
5月前
|
C++
003 Qt_信号和槽-上
本文介绍了Qt中的信号与槽机制,包括信号和槽的概念、本质及连接方法,并演示了如何自定义槽函数。信号是事件的体现,槽是对信号的响应函数。通过信号与槽,可以将独立的控件关联起来,实现复杂的交互逻辑。文中还详细展示了如何在Qt项目中定义和使用槽函数,通过实例代码和图形化界面操作,帮助读者更好地理解和应用这一机制。
117 1
003 Qt_信号和槽-上
|
8月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 消息对话框QMessageBox
【Qt 学习笔记】Qt窗口 | 标准对话框 | 消息对话框QMessageBox
1316 4
【Qt 学习笔记】Qt窗口 | 标准对话框 | 消息对话框QMessageBox
|
8月前
|
【Qt 学习笔记】Qt系统相关 | Qt事件 | 事件的介绍及基本概念
【Qt 学习笔记】Qt系统相关 | Qt事件 | 事件的介绍及基本概念
327 4
|
8月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 文件对话框QFileDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 文件对话框QFileDialog
1539 4
|
8月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 输入对话框QInputDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 输入对话框QInputDialog
589 3
|
8月前
|
【Qt 学习笔记】Qt窗口 | 标准对话框 | 字体对话框QFontDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 字体对话框QFontDialog
264 3

推荐镜像

更多
下一篇
oss创建bucket
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等