c++ - 有没有办法知道Qt中哪个信号触发了插槽?

标签 c++ qt signals-slots

假设我有两个信号(void signal1()void signal2())和一个插槽(void slot()) 。 两个信号都连接到插槽:

connect(this, &Classname::signal1, this, &Classname::slot);
connect(this, &Classname::signal2, this, &Classname::slot);

slot()的实现中,有没有办法知道哪个信号触发了这个槽?

最佳答案

您可以通过提供额外信息的 lambda...

connect(this, &Classname::signal1, this,
        [source = 1, this]()
        {
            slot(source);
        });
connect(this, &Classname::signal2, this,
        [source = 2, this]()
        {
            slot(source);
        });

(上面假设您当前的 Classname::slot 实现不带任何参数 - 进行调整以适应。)

关于c++ - 有没有办法知道Qt中哪个信号触发了插槽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63487157/

相关文章:

php - 使用 HTTP 上传文件。收到错误 :- HttpSendReuest 12005

visual-studio - 如何在具有默认参数的插槽上使用 Qt5 connect()

python-3.x - PyQt5 + Python 3 : passing lists, dicts 作为跨线程的信号参数

c++ - 指向类成员函数的指针作为外部函数的参数

c++ - C++中的自动垃圾处理

c# - 从 64 位应用程序调用 32 位 DLL 的函数

Qt:QTreeView:标题上的中心图标

c++ - 如何从 QString 获取 const char *

c++ - Qt外部库重复符号链接(symbolic link)错误

python - PyQT 与 PyObjc/Cocoa-Python 对比