Qt:信号

Qt的信号本质是函数,且默认也只能为公有函数(这样可以在任何地方进行信号发送)

前置条件

Qt的信号支持需要Qt的元对象系统的支持,元对象系统需要一下条件

  1. 类必须继承与QObject
  2. 类内必须私有声明Q_OBJECT宏
  3. 需有元对象编译器(moc)

声明和实现

在我们定义的元对象类中可以进行信号的声明,默认形式为 :

void mySignal(paramterLists);//返回值只能是void

注意我们代码内只能进行信号的声明,不能写定义。定义是使用元对象系统自动生成的。
当cpp文件编译时,若监测到类的声明中包含Q_OBJECT宏,就会使用元对象编译器创建一个新的以moc_开头的cpp源文件,该源文件会参与到编译和链接中,该源文件内部会有信号的实现。

例如下面的函数,就是自动生成的文件moc_myTest.cpp中的信号定义。

void PlotsPanel::show_a_text_message(QString _t1)
{
   
    void *_a[] = {
    nullptr, const_cast<void*>(reinterpret_cast<const void*>(&_t1)) };
    QMetaObject::activate(this, &staticMetaObject, 6, _a);
}

相关推荐

  1. linux系统 QT 处理键盘Ctrl+C

    2024-01-18 04:58:02       36 阅读
  2. Qt中使用静态函数调用emit

    2024-01-18 04:58:02       30 阅读
  3. Linux

    2024-01-18 04:58:02       54 阅读
  4. Linux

    2024-01-18 04:58:02       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-18 04:58:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-18 04:58:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-18 04:58:02       82 阅读
  4. Python语言-面向对象

    2024-01-18 04:58:02       91 阅读

热门阅读

  1. Matlab中常见的数据平滑方式

    2024-01-18 04:58:02       45 阅读
  2. Lumerical ------ 直波导仿真及技巧

    2024-01-18 04:58:02       56 阅读
  3. HTTP API 认证技术详解(一):Basic Authentication

    2024-01-18 04:58:02       52 阅读
  4. uniapp——自定义导航栏的封装

    2024-01-18 04:58:02       61 阅读
  5. 优化ansible执行playbook速度

    2024-01-18 04:58:02       44 阅读
  6. 在FFmpeg源码下增加自定义程序

    2024-01-18 04:58:02       44 阅读