c++ - Qt C++ : How to get event target object?

标签 c++ qt events event-handling signals-slots

有一个容器Widget实例A,A内包含Widget实例C1、C2、C3……等。

有一个插槽处理 Widget A 的 action_triggreed() 信号。

有没有办法确定点击了哪个目标小部件 C1、C2、C3...? 这种必要性的原因是包含许多小部件,并且在每个小部件上使用 connect() 方法没有意义,这将需要 50 多行额外的连接语句,每个一个!

例如:考虑一个带有很多按钮的 QToolBox。您将如何通过使用 QToolBox action_triggered 或类似信号来确定按下哪个按钮,而不单独为各个按钮使用信号和槽?

最佳答案

您可以使用 QObject::sender() 函数。

void A::triggeredSlot() {
    QObject* obj = sender();
    QButton* but = qobject_cast<QButton*>(obj);
}

只需使用正确的类型等

关于c++ - Qt C++ : How to get event target object?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36050747/

相关文章:

java - QT 与 Flex/Flash/AIR 的多媒体对比

c++ - 如何从 QDialog 的 const 方法显示 QMessageBox?

c++ - 无法使用 vs 2013 打开 systemc 库

c++ - protobuf 无法序列化

c++ - 用4递归函数替换奇数位

c++ - 如何取消 winEventFilter 上的 WM_CLOSE?

c# - 在不重新启动 WPF 应用程序的情况下动态传递和使用数据

javascript - 计算交替序列中的事件

javascript - Ext JS - 在运行时添加监听器

c++ - 使用 C++/Gmock 在中间模拟