【问题标题】:Qt Designer, missing "go to slot" in context menu?Qt Designer,在上下文菜单中缺少“转到插槽”?
【发布时间】:2012-08-27 00:26:12
【问题描述】:

我一直在 YouTube 上观看 Qt 教程系列,其中作者展示了按下按钮时如何调用函数。 He right-clicked on the button in Qt Creator IDE and chose "Go to slot", from where he chose the signal which would fire the generated function。由于我习惯于使用 Netbeans 进行开发,因此我只是尝试使用嵌入式 Qt 设计器来效仿他的示例。不幸的是,当我右键单击我的按钮或任何小部件时,没有“转到插槽...”条目。当然,我可以为我的主窗口创建一个新插槽,然后将按钮的信号连接到它,但是对我来说,用一个函数来做这件事似乎更方便、更干净。有没有办法解决,或者如果没有,至少可以完全通过代码来解决,而不必为每个用于不同目的的按钮添加一个新插槽到主窗口?感谢您的帮助。

【问题讨论】:

    标签: c++ qt netbeans signals-slots qt-designer


    【解决方案1】:

    虽然我不知道为什么 Netbeans 中的 QtDesigner 不提供此功能,但我知道该功能的作用:它只是在您的小部件类中创建一个具有特殊名称的插槽。请注意,它添加了连接语句。它使用自动连接功能,其工作原理如下:

    对于名称与此模式匹配的每个插槽:

    void on_X_Y(...)

    它将连接到名为X 的对象的名为Y 的信号。因此,如果您有一个名为 button 的 QPushButton,并且您想处理信号 pressed,只需创建一个具有以下签名的插槽:

    void on_button_pressed()

    如果您想知道这个槽是如何连接到信号的:这发生在setupUi() 末尾的ui_...h 文件中:

        QMetaObject::connectSlotsByName(WidgetName);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多