2012-09-01 51 views
2

我一直在观看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设计器来遵循他的示例。不幸的是,当我右键点击我的按钮或任何小部件时,没有“前往插槽...”条目。当然,我可以为我的主窗口创建一个新插槽,然后将按钮的信号连接到它,但使用单个函数进行操作对我来说似乎更方便,更清洁。有没有一种方法可以解决问题,至少是完全通过代码处理的一种方法,而不必为每个服务器都有不同目的的单个按钮添加一个新的插槽到主窗口?谢谢你的帮助。Qt设计器,缺少上下文菜单中的“去槽”?

回答

8

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

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

void on_X_Y(...)

它将被连接到命名为名为X对象的Y信号。所以,如果你有一个QPushButton命名为button,你要处理的信号pressed,简单地创建具有以下签名插槽:

void on_button_pressed()

如果你想知道这个插槽如何被连接到信号:出现这种情况在ui_...h文件末尾setupUi()

QMetaObject::connectSlotsByName(WidgetName);