如何在 .ui 文件中手动将信号连接到插槽?

Posted

技术标签:

【中文标题】如何在 .ui 文件中手动将信号连接到插槽?【英文标题】:How to connect signals to slots manually in .ui files? 【发布时间】:2012-01-27 12:02:51 【问题描述】:

由于我使用 SCons 而不是 qmake,我没有项目 (.pro) 文件,因此 Qt Creator (我只用它来制作 GUI)拒绝将信号连接到插槽。我想手动编辑 .ui 文件以添加适当的连接。我应该改变什么?

【问题讨论】:

【参考方案1】:

使用uic按照Karlson说的编译ui文件。例如:

uic yourinterface.ui -o uicompiled.h

这样您可以从 ui 文件生成完整的类,而不是将它们插入到您的代码库中

【讨论】:

如果我将 .ui 转换为 .h 并在 .h 中连接信号,我将无法编辑 .ui 而无需再次重新连接信号,所以这不是我想要的答案:( 通常您不会编辑其中任何一个文件,除非您建立标准化连接,例如 close()【参考方案2】:

qmake 会将.ui 文件转换为.pro,然后再转换为make 文件。但是您仍然需要运行uic 来编译您的.ui 文件以生成元对象以允许发生信号槽连接。类定义的标题也可能会有所帮助。

通常,当您对ui 进行子类化时,您将使用connect 函数将信号连接到子类中的自定义插槽。

【讨论】:

什么意思,qmake 会将.ui 文件转换成.pro @Septagram 如果您查看.ui 文件,它基本上是xml 文件。所以qmake 将获取该文件。将其转换为.pro,然后将.pro 转换为makefile,具体取决于您为其提供的选项uic 然后将其转换为.h

以上是关于如何在 .ui 文件中手动将信号连接到插槽?的主要内容,如果未能解决你的问题,请参考以下文章

如何将信号连接到插槽

如何将信号连接到不同线程中的插槽

Qt:如何将不同类的静态信号连接到插槽?

如何将信号连接到 2 个共享库之间的插槽

将 QML 信号连接到 PySide2 插槽

如何将 Qdialog 中的信号连接到 QMainwindow 中的插槽