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

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

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

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

【问题讨论】:

    标签: c++ 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 的方法)
    • 子类方法
    • 信号映射器方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-27
      相关资源
      最近更新 更多