我一直在 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 来学习他的示例。不幸的是,当我右键单击我的按钮或任何小部件时,没有“转到插槽...”条目。当然,我可以为我的主窗口创建一个新插槽,然后将按钮的信号连接到它,但是用一个函数来完成它对我来说似乎更加方便和干净。有没有办法修复,或者如果没有,至少是一种完全通过代码处理的方法,而不必为服务于不同目的的每个按钮在主窗口中添加一个新插槽?感谢您的帮助。
最佳答案
虽然我不知道为什么 Netbeans 中的 QtDesigner 不提供此功能,但我知道该功能的作用:它只是在您的小部件类中创建一个具有特殊名称的插槽。请注意,它不添加连接语句。它使用自动连接功能,其工作方式如下:
对于名称与此模式匹配的每个插槽:
void on_X_Y(...)
它将连接到名为X
的对象的名为Y
的信号。因此,如果您有一个名为 button
的 QPushButton,并且您想要处理信号 pressed
,只需创建一个具有以下签名的槽:
void on_button_pressed()
如果您想知道这个插槽是如何连接到信号的:这发生在 setupUi()
末尾的 ui_...h
文件中:
QMetaObject::connectSlotsByName(WidgetName);
关于c++ - Qt Designer,上下文菜单中缺少 "go to slot"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12227993/