zoukankan      html  css  js  c++  java
  • 信号槽函数顺序以及是否可以有返回值问题

    引言

    qt的信号槽机制,不仅可以一个信号连接一个槽,而且可以一对多或多对一

    • 对一个信号对应多个槽时

      槽函数的执行顺序和信号槽连接的顺序一致

    • 多个信号对应一个槽时

      首先利用 QObject::setObjectName(const QString&) 方法设置信号发出者的对象名称,然后在槽函数中利用 QObject::sender()->objectName() 方法获取信号发出者的对象名称

     

    所以官方给出申明信号槽都不要带有返回值,因为当多对多的情况下时都给你返回值,一大堆有何意义呢,但是有些特殊情况时是可以有的,较真的朋友请看下面

    一、信号返回值

      大都说Qt信号槽不能使用返回值。其实不不准确的,Qt5中,信号槽是有返回值的。只是Qt的一个信号可以连接多个槽,还有同步调用和异步调用的问题,没发支持的很好,所以,返回值虽有,但没啥用。

    先说下返回值的规则把:

    • 同步调用才有返回值,异步调用的返回值永远为返回值类型默认构造函数出来的。
    • 连接的多个槽都返回值,那么结果是最后调用(连接)的那个。

    也就是说对于QueuedConnection连接的信号槽,永远只是返回返回类型的默认构造函数的。对于AutoConnection连接的,如果发出信号的线程和槽函数线程不同亦然。

    二、槽函数返回值

      槽函数可以是任意的函数,可以是虚函数,可以被重载,和信号一样一般在直连的信号槽时有用,其余时候真的没啥意义

  • 相关阅读:
    js复习(一)
    Webform(文件上传)
    Webform(分页与组合查询配合使用)
    Webform(分页、组合查询)
    webform(内置对象)
    Webform(内置对象-Response与Redirect、QueryString传值、Repeater删改)
    Webform(Repeater控件)
    MDI窗体容器 权限设置
    进程和线程
    WinForm三级联动
  • 原文地址:https://www.cnblogs.com/laiyingpeng/p/12509345.html
Copyright © 2011-2022 走看看