c++ - Qt Designer,上下文菜单中缺少 "go to slot"?

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

我一直在 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/

相关文章:

c++ - 包含的库仍然导致 "undefined reference"错误

c++ - QtSql连接

c++ - 如何查看 cmake_automoc 正在运行的确切命令?

Tomcat 服务器 Netbeans 8.0 在 Windows 8 中不工作

Java/NetBeans - 如何进入 jar 文件?

c++ - 如何在 C 语言中通过按键退出 while 循环?

c++ - 使用指令的行为

c++ - 基于颜色的 OpenCV 边缘/边界检测

c++ - 如何从文件中读取十六进制并将其存储在无符号字符中?

java - 提交事务后数据未更新