繁体   English   中英

如何在qt4设计器中创建自定义插槽?

[英]How do I create a custom slot in qt4 designer?

每当我使用信号/插槽编辑器对话框时,我必须从现有的插槽列表中进行选择。 所以问题是如何创建自定义命名槽?

这似乎可以在Qt Designer 4.5.2的版本中实现,但无法通过主窗口中的Signal / Slot Editor dock-widget完成。

这对我有用

  1. 切换到编辑信号/插槽模式(F4)
  2. 从要发出信号的小部件拖放到要接收信号的小部件。
  3. 将出现“ 配置连接”对话框,其中显示了发出窗口小部件的信号以及接收窗口小部件的插槽。 单击右侧插槽列下方的编辑....
  4. 出现一个Signiving / Slots of ReceivingWidget对话框。 在此处可以单击插槽下方的加号图标以添加任何名称的新插槽。
  5. 然后,您可以返回并连接到“ 配置连接”对话框中的新插槽,或者实际位于主窗口中的信号/插槽编辑器dockwidget中。

警告:我正在使用PyQt,我只是尝试使用这种方式从Python添加插槽,而不是使用C ++,所以你的里程可能会有所不同......

右键单击主窗口并选择“更改信号和插槽”并添加新插槽。 它将出现在您的信号槽编辑器中。

我可以通过以下方式完成:

在MainWindow.h中,添加以下行:

public slots:
     void example();

在MainWindow类中。

在MainWindow.cpp中

void MainWindow::example() {
     <code>
}

不幸的是,这在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方法建立,每当发出信号时,都会调用此插槽。

也许它会有所帮助。

默认情况下,您必须从现有的插槽列表中进行选择。 但您可以通过右键单击设计器右侧列表中的对象来添加插槽,然后选择“插槽/信号”并添加自定义插槽/信号。 之后,您可以在信号/插槽编辑器中选择它。

用右键单击小部件

将窗口小部件提升为您定义的类

再次单击右键单击小部件

你会看到信号和插槽是可编辑的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM