【发布时间】:2010-09-15 00:05:57
【问题描述】:
每当我使用信号/槽编辑器对话框时,我都必须从现有的槽列表中进行选择。那么问题是如何创建一个自定义的命名槽?
【问题讨论】:
标签: c++ qt qt4 qt-creator qt-designer
每当我使用信号/槽编辑器对话框时,我都必须从现有的槽列表中进行选择。那么问题是如何创建一个自定义的命名槽?
【问题讨论】:
标签: c++ qt qt4 qt-creator qt-designer
右键单击主窗口并选择“更改信号和插槽”并添加一个新插槽。 它将出现在您的信号槽编辑器中。
【讨论】:
这在 Qt Designer 4.5.2 版本中似乎是可能的,但它不能在主窗口的 Signal/Slot Editor 停靠小部件中完成。
这对我有用
警告:我正在使用 PyQt,我只尝试使用从 Python 而不是 C++ 以这种方式添加的插槽,因此您的里程可能会有所不同...
【讨论】:
不幸的是,这在 Qt4 中是不可能的。
在 Qt3 中,您可以创建自定义插槽,然后在 ui.h 文件中实现这些插槽。但是,Qt4 不使用此文件,因此不支持自定义插槽。
QtForum上有一些关于这个问题的讨论
【讨论】:
我可以这样做:
在 MainWindow.h 中,添加以下行:
public slots:
void example();
在 MainWindow 类中。
在 MainWindow.cpp 中
void MainWindow::example() {
<code>
}
【讨论】:
这似乎不可能以简单的方式实现。
设计器仅允许您将现有小部件提升为您自己的自定义小部件。但它不允许您连接提升的小部件类的信号和插槽。
可行的方法是为设计师创建一个插件,就像described here 和它后面的页面一样。
正常的做法是将小部件提升到您自己的类,然后在您自己的代码中手动连接它。这个过程被描述为here
【讨论】:
这是不可能的,因为这意味着您将向现有的 Qt 类添加一个插槽,例如 QPushButton,这不是真正的方法。
您最终应该通过继承现有的QWidget 创建自己的QWidget。然后按照建议将其作为插件集成到 Qt Designer 中。拥有自己的类允许您根据需要添加/修改可用的信号/插槽。
【讨论】:
不要忘记插槽自动连接功能。有一些缺点,例如如果您重命名小部件,则必须重命名您的函数,但我们在我的公司经常使用这些。
【讨论】:
你可以使用魔法槽格式
void on_objectName_signal() {
// slot code here, where objectname is the Qt Designer object name
// and the signal is the emission
}
到这个方法的连接是通过connectSlotsByName方法建立的,每当信号发出时,这个槽就会被调用。
【讨论】:
也许会有所帮助。
默认情况下,您必须从现有的插槽列表中进行选择。但是您可以通过右键单击设计器右侧列表中的对象来添加插槽,然后选择“插槽/信号”并添加您的自定义插槽/信号。之后,您可以在信号/槽编辑器中选择它。
【讨论】:
右键单击小部件
将小部件提升为您定义的类
再次通过右键单击小部件
你会看到信号和槽是可编辑的
【讨论】: