本页内容

Qt Widgets Designer的信号与插槽编辑模式

<span translate=Qt Widgets Designer 连接模式的屏幕截图,展示了两个控件之间的信号连接" src="images/designer-connection-mode.png" title="Qt Widgets Designer 连接模式的屏幕截图,展示了两个控件之间的信号连接"/>

在Qt Widgets Designer 的信号与槽编辑模式中,您可以使用Qt的信号与槽机制将表单中的对象相互连接。 小部件和布局均可通过直观的连接界面进行连接,该界面利用Qt Widgets Designer 提供的兼容信号和槽菜单。保存表单时,所有连接都会被保留,以便在构建项目时立即可用。

有关 Qt 信号与槽机制的更多信息,请参阅《信号与槽》文档。

连接对象

要开始连接对象,请打开“编辑”菜单并选择“编辑信号/槽”,或按F4键,进入信号和槽编辑模式。

表单上的所有控件和布局均可相互连接。但间隔控件仅用于为布局提供间距提示,因此无法与其他对象连接。

显示了一个被高亮显示的布局小部件的屏幕截图突出显示的对象

当光标悬停在可用于连接的对象上时,该对象将被高亮显示。

要建立连接,请按住鼠标左键,并将光标拖动到您想要连接的目标对象上。 此时,一条线将从源对象延伸至光标位置。如果光标悬停在表单上的另一个对象上,该线末端将出现一个箭头,指向目标对象。这表示当您释放鼠标按钮时,这两个对象之间将建立连接。

在拖动连接路径时,您可以随时按Esc 键取消该连接。

截图展示了如何将一个小部件连接到另一个小部件:只需在需要连接的目标小部件上单击鼠标左键即可建立连接

随着光标在表单上移动,连接路径的形状会随之变化。当光标掠过对象时,这些对象会被高亮显示,表明它们可用于信号与插槽连接。松开鼠标按钮即可建立连接。

此时将显示“配置连接”对话框(如下图所示),其中列出了源对象的信号和目标对象的槽,供您使用。

显示两个选定控件之间可发出的信号列表的窗口截图

要完成连接,请从源对象中选择一个信号,从目标对象中选择一个槽,然后单击“确定”。若要取消连接,请单击“取消”。

注意:如果 选中了“显示所有信号和槽”复选框,则会显示源对象的所有可用信号。否则,从QWidget 继承的信号和槽将被隐藏。

您可以在表单上的对象之间建立任意数量的连接;可以将对象的信号连接到表单本身中的槽。因此,许多对话框中的信号和槽连接均可直接在Qt Widgets Designer 中完成配置。

截图显示:一个来自小部件的箭头跟随光标移动,以选择一个接收信号的小部件连接到表单

要将对象连接到表单本身,只需将光标悬停在表单上并释放鼠标按钮即可。连接的端点将变为电气“接地”符号。

编辑和删除连接

默认情况下,连接路径会带有两个标签,分别显示该连接涉及的信号和插槽。这些标签通常沿连接线方向排列。您可以通过拖动连接路径两端的红色方块,在所属控件内部移动这些标签。

Qt Designer 信号与槽编辑器的截图,展示了 okButton 与 cancelButton 之间的连接,其中 okButton 和 cancelButton 都会发出“clicked()”信号。okButton 会触发“accept()”函数,而 cancelButton 则会触发“reject()”函数。信号/槽编辑器

连接建立后,其中的信号和槽仍可进行修改。配置完成后,该连接将显示在Qt Widgets Designer 的信号和槽编辑器中,以便进行进一步编辑。您还可以通过双击连接路径或其标签之一来显示“连接对话框”,从而编辑信号/槽连接。

显示连接编辑模式的截图,用于修改两个控件之间的信号连接删除连接

点击连接路径的任意一段即可选中整个连接。选中后,可使用Delete键删除该连接,确保其不会被写入 UI 文件中。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.