如何在 Qt 中创建共享小部件的子目录?

Posted

技术标签:

【中文标题】如何在 Qt 中创建共享小部件的子目录?【英文标题】:How do I make a sub directory of shared widgets in Qt? 【发布时间】:2017-12-08 17:25:02 【问题描述】:

我遇到的问题是我无法制作独立的无头小部件。所以我必须制作一个主小部件,在它下面制作子小部件。但是当我这样做时,我无法从另一个子项目中的另一个小部件应用程序加载子小部件。我最终得到一个“未解析的外部符号”错误。

我不完全确定要显示什么代码。

我的树基本上是这样的:

main_project 子项目 my_widget my_widget.pro 标题 my_widget.h subWidget.h 来源 my_widget.cpp subWidget.cpp main.cpp 表格 my_widget.ui subWidget.ui 不同的子项目 another_widget another_widget.pro 标题 another_widget.h 来源 another_widget.cpp main.cpp 表格 another_widget.ui

所以这就是我的树的样子。我正在尝试使用 another_widget 创建一个 subwidget 实例。原因是,我将拥有 3 或 4 个(不断增长的)小部件,它们都需要能够访问相同的子小部件。到目前为止,我所尝试的一切都没有奏效。看来我必须在需要使用的主小部件下复制我想使用的每个子小部件。

【问题讨论】:

【参考方案1】:

只需使用“添加现有文件”菜单点从另一个子项目添加小部件。 IE。您的表格将包含在 2 个“专业”文件中。可能您需要将表单标题的路径添加到“pro”文件的 INCLUDEPATH 变量中。

【讨论】:

这将在使用它的应用程序加载时加载小部件。有没有一种方法可以让我只在需要时才加载小部件?我曾尝试制作一个小部件库,但这并没有奏效,因为由于某种原因,拥有一个 ui 元素会阻止使用库。 您可以在运行时创建小部件并在运行时添加到另一个小部件布局。换句话说,您可以通过 2 种方式将小部件添加到另一个小部件布局。 ... 首先通过 QtDesigner。在这种情况下,Qt 将生成 C++ 代码,该代码将在创建父窗口时创建子窗口小部件。第二种方式。您将在 QtDesigner 中创建父窗口小部件,并通过您的 C++ 代码创建\添加子窗口小部件。您可以选择在运行时将哪些小部件添加到父级。所有这些情况都可以与上述解决方案一起使用。如果您不清楚,请告诉我。 我认为很清楚。我只关心跨多个子项目的工作方式——这是我的主要目标——因为我必须手动将文件添加到每个子项目中,这让我觉得效率低下。 如果你有很多很多的表格。然后将它们全部放在一个文件夹中,并在每次添加新小部件时通过“qmake -project”为该文件夹生成专业文件。或者每次编译。之后,您可以将该 pro 文件和文件夹包含到另一个子项目中。还需要在该子项目中修补 INCLUDEPATH 变量。

以上是关于如何在 Qt 中创建共享小部件的子目录?的主要内容,如果未能解决你的问题,请参考以下文章

在 Qt 设计器中创建要提升的自定义小部件

在 Qt 中创建小部件预览

在 Qt C++ 应用程序中创建 python 解释器小部件的简单方法?

QT:如何关闭同一个小部件的多个窗口?

如何在 Qt 中制作可展开/可折叠的部分小部件

如何在 QT QML 中创建自己的目录?