zoukankan      html  css  js  c++  java
  • Qt中 QObject * sender() const的用法

    在项目中用到了此功能,作为一个记录,如下:

    在项目中用到了多个按钮,但是只定义了一个槽函数,需要知道是哪个按钮发送的点击信号,所以使用该函数进行确认。、

    官网给的说明是:

    Returns a pointer to the object that sent the signal, if called in a slot activated by a signal。(如果在信号激活的插槽中调用,则返回指向发送信号的对象的指针)

     如下所示: 

     1   QPushButton *btn_1 = new QPushButton;
     2   connect(btn_1, SIGNAL(click()), this, SLOT(btn_click_slot()));
     3 
     4   QPushButton *btn_2 = new QPushButton;
     5   connect(btn_2, SIGNAL(click()), this, SLOT(btn_click_slot()));
     6 
     7   void btn_click_slot() {
     8     //如果点击btn_1,则此处btn指向btn_1;如果点击btn_2,则btn指向btn_2
     9     QPushButton *btn = qobject_cast<QPushButton *>(sender());
    10   }

    Qt官方说明:

    d

     翻译如下:

    如果在信号激活的插槽中调用,则返回指向发送信号的对象的指针;否则返回nullptr。指针仅在从对象的线程上下文调用此函数的插槽执行期间有效。

    如果发送方被破坏或插槽与发送方的信号断开连接,则此函数返回的指针将变为无效。

    警告:此功能违反了模块化的面向对象原则。但是,当多个信号连接到单个插槽时,访问发送者可能很有用。

    警告:如上所述,当从与该对象的线程不同的线程通过Qt :: DirectConnection调用插槽时,此函数的返回值无效。请勿在这种情况下使用此功能。

  • 相关阅读:
    虚拟内存思想
    虚拟内存映射 段分割 vm_area_struct
    进程、内存的理想与现实 VS 虚拟内存
    进程地址空间
    MMU CPU及思想
    链接器和加载器 好书
    编译器 链接器 加载器
    链接器简介
    C编译器、链接器、加载器详解
    静态库是.o文件的集合与弱符号
  • 原文地址:https://www.cnblogs.com/malinzhai/p/12634763.html
Copyright © 2011-2022 走看看