【QT】QOverload 信号槽连接方式用法示例

本文详细介绍了QT5中信号槽的两种连接方式,包括普通信号连接和采用qOverLoad进行重载信号的连接。通过示例说明了如何在存在重载信号的情况下,使用QOverload来明确指定要连接的信号,确保正确地触发对应的槽函数。内容涵盖信号槽机制的关键点及其在实际应用中的重要性。
摘要由CSDN通过智能技术生成

目录

一.QT5信号槽连接方式如下:

二. 应用

示例1

示例2


一.QT5信号槽连接方式如下:

  • 普通信号 

     

QObject::connect(信号发出者地址,信号发出者函数名称(信号发出者函数参数...),
         信号接收者地址,信号接收者槽函数名称(信号接收者槽函数参数...));


注意:若在QObject子类内部定义信号槽,则可直接调用connect函数。

  • 采用qOverLoad重载的信号

     

QObject::connect(信号发出者地址,qOverLoad<信号重载函数参数...>::of(&类型:: 信号),
                 信号接收者地址,信号接收者槽函数名称(信号接收者槽函数参数...));

二. 应用

       由于类里面会存在多个同名但不同参数的signal方法,于是要用QOverload<参数1类型,参数2类型,...>::of(&同名的方法名)的方式来引用具体的那个方法(信号)。

示例1


connect(buttonGroup,QOverload<int>::of(&QButtonGroup::buttonClicked),
        this,&MainWindow::buttonGroupClicked);

解析

      返回一个形参是(int)、名字是buttonClicked的函数指针。当有多个重载函数时,可以利用QOverload获取指定的那个重载函数,多用于信号槽连接。

      因为有两个命名都为QButtonGroup::buttonClicked的信号,仅信号的形参不一样,所以连接信号槽的时候要明确指定是其中的哪一个。这里QOverload便是用来指定使用形参为int的那个buttonClicked信号。

示例2

connect(ui.comboBox_locateType, QOverload<int>::of(&QComboBox::activated), this, &Matching::slot_cmbChanged);

解析

         activated这个信号类似于currentIndex的改变,但是只有当组合框的索引被用户改变时才会发出,而不是当以编程方式设置时。

        如上图所示,第二个参数需要一个信号(函数)的指针,但是QComboBox::activated实际上有两个重载函数"void activated(const QString &text)""void activated(int index)",而由于上述形式无形参列表,无法确定返回哪个信号的指针。

        此时利用QOverLoad通过指定形参列表,来确定返回哪个信号的指针。 所以使用QOverload<int>::of可以指定形参为 int 的 “activated”信号。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

&Mr.Gong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值