c++ - 如何在 Qt 的另一个类中发出信号?

标签 c++ qt signals

我们可以通过 emit signal_a() 轻松定义信号的类中发射信号

class A
{
signals:
    signal_a();

public:
    void fun()
    {
        do_something();
        emit signal_a();
        do_something();
    }
};

但是,如何在 Qt 中的另一个类中发出信号?例如

class B
{
public:
    void fun()
    {
        do_something();
        (*a) emit signal_a(); // ???
        do_something();
    }

A* a;
};

最佳答案

您不能直接发出信号,因为信号是 protected 方法(在 Qt4 中)。有几种方法可以做你想做的事:

  1. 在类 A 中创建公共(public)方法,它将发出必要的信号
  2. 在 B 类中创建信号并将其连接到 A 类中的信号

你应该记住,带有信号的类必须插入 QObject 并包含 Q_OBJECT 宏。

关于c++ - 如何在 Qt 的另一个类中发出信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18917926/

相关文章:

c++ - 我应该如何进行这种显式特化?

html - QTextEdit 添加缩写系统

安卓 : Catch SIGSEGV signal JNI

c - 错误条件已修复,仍然在 C 中获取 SIGSEGV

c++ - 在 .cpp 中定义常量 int/char*

c++ - 指针对象的内存分配

qt - 更改对话框窗口大小时使 QTableWidget 展开

C - 优雅地中断 msgrcv 系统调用

c++ - Gcc 找不到 wine 库

c++ - 使用 QNetworkAccessManager 将 Qt4 中的 QFtp 移植到 Qt5