如何在Qt4 Designer中创建自定义插槽?
时间:2020-03-06 15:03:39 来源:igfitidea点击:
每当使用信号/插槽编辑器对话框时,都必须从现有的插槽列表中进行选择。因此,问题是如何创建自定义命名插槽?
解决方案
不幸的是,这在Qt4中是不可能的。
在Qt3中,我们可以创建自定义插槽,然后在ui.h文件中实现该插槽。但是,Qt4不使用此文件,因此不支持自定义插槽。
QtForum上对此问题进行了一些讨论
这似乎不可能以简单的方式实现。
设计器仅允许我们将现有的小部件升级为自己的自定义小部件。但是,它不允许我们连接已升级的窗口小部件类的信号和插槽。
可行的方法是为设计人员创建一个插件,如此处及其后续页面所述。
通常的做法是将小部件升级为我们自己的类,然后以我们自己的代码手动将其连接。这个过程在这里描述
这是不可能的,因为这意味着我们将向现有的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建立与该方法的连接,并且每当发出信号时,都将调用此插槽。
在Qt Designer 4.5.2版本中似乎确实可以做到这一点,但是不能通过主窗口中的Signal / Slot Editor停靠小部件完成。
这就是对我有用的
- 切换到编辑信号/插槽模式(F4)
- 从要发送信号的小部件拖放到要接收信号的小部件。
- 将出现"配置连接"对话框,其中显示了发射小部件的信号以及接收小部件的插槽。单击右侧插槽列下面的"编辑..."。
- 出现信号/接收小槽对话框。在此处,可以单击插槽下方的加号图标以添加任何名称的新插槽。
- 然后,我们可以返回并在"配置连接"对话框中或者实际上在主窗口的"信号/插槽编辑器" dockwidget中连接到新插槽。
警告:我正在使用PyQt,并且我只尝试使用以这种方式从Python添加的插槽,而不是从C ++添加的插槽,因此工作量可能会有所不同...