我一直在观看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 Designer来跟随他的例子。不幸的是,当我右键单击我的按钮或任何小部件时,没有“转到插槽...”条目。当然,我可以为我的主窗口创建一个新的插槽,然后将按钮的信号连接到它,但是使用单个功能进行操作对我来说似乎更方便和干净。有没有办法修复是否,或者如果没有,至少是一种完全通过代码的方式,而不必为每个服务于不同目的的单个按钮添加一个新的插槽到主窗口?谢谢你的帮助。
答案 0 :(得分:9)
虽然我不知道为什么Netbeans中的QtDesigner不提供此功能,但我知道该功能的用途:它只是在widget类中创建一个带有特殊名称的插槽。请注意,它不添加连接语句。它使用自动连接功能,其工作方式如下:
对于名称与此模式匹配的每个插槽:
void on_X_Y(...)
它将连接到名为Y
的对象的名为X
的信号。因此,如果您有一个名为button
的QPushButton,并且您想要处理信号pressed
,只需创建一个具有以下签名的插槽:
void on_button_pressed()
如果您想知道此插槽如何连接到信号:这发生在ui_...h
末尾的setupUi()
文件中:
QMetaObject::connectSlotsByName(WidgetName);