是否可以获得有关在 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 中发出事件的控件的信息?的主要内容,如果未能解决你的问题,请参考以下文章