是否可以获得有关在 Qt 中发出事件的控件的信息?

Posted

技术标签:

【中文标题】是否可以获得有关在 Qt 中发出事件的控件的信息?【英文标题】:Is it possible to get information on the control on which an event was issued in Qt? 【发布时间】:2013-07-09 18:16:42 【问题描述】:

我正在尝试为按钮单击创建一个事件处理程序并将其连接到多个按钮(创建一个简单的计算器,按下每个数字会将其文本添加到 lineEdit)。

在 C# 中,我们将使用作为参数传递的 sender 对象,然后将其转换回 Button 并获取其 Text 或其他需要的属性并继续。

我是 Qt 新手,我们在 Qt 中有这样的事情或类似的方法吗?由于我无法从 Qt 的信号/插槽方法中得到它。

【问题讨论】:

【参考方案1】:

在接收信号的QObject / QWidget上,调用this->sender()(QObject::sender()),并用dynamic_cast<MyWidgetType*>(...)进行投射

【讨论】:

@Lol4t0:我不熟悉 QSignalMapper,尽管我现在在文档中看到了它。你能写一个答案,这样我也能受益吗? QObject::sender() 确实做了 OP 描述的事情,但现在我很好奇你建议的解决方案! QSignalMapper确实可以在这里使用,但sender()更常用、方便、高效。我看不出为什么应该在这里使用QSignalMapper【参考方案2】:

您可以在此处找到一些很好的示例,用于链接回事件的发布者。

http://doc.qt.digia.com/qq/qq10-signalmapper.html

他们给你不同的例子

sender() 方法(类似于下面 Jamin Grey 的方法) 子类方法 信号映射器方法

【讨论】:

以上是关于是否可以获得有关在 Qt 中发出事件的控件的信息?的主要内容,如果未能解决你的问题,请参考以下文章

C++ Qt“转到插槽”丢失

如何获取控件句柄 vc

winform应用程序

如何在功能性 Vuejs 组件中发出事件

NestJs套接字身份验证,在handleConnection中发出事件

如何在组件 vue.js 内的标签中发出事件