Qt QWidget 多实例
Posted
技术标签:
【中文标题】Qt QWidget 多实例【英文标题】:Qt QWidget multiple instances 【发布时间】:2016-05-23 15:46:00 【问题描述】:我们是多人一起开发一个 Qt 应用程序。我正在实现一个库,它将在应用程序的多个其他部分中实例化。这个库有一个显示类+表单。
到目前为止,我只是创建了一个库的单个实例,在一个虚拟对象上运行,并将调试数据传递给一个 display+form 实例,然后就这样工作了。
但是现在核心调试已经完成,目标是让所有东西都可以实例化——不仅仅是核心库代码,还有表单本身,并将该表单嵌入到其他显示中。每个调用者/用户都将负责将他们正在使用的核心库实例的输出数据传递给表单的实例。表单的每个实例将分别显示特定库实例生成的信息,可能具有不同的显示选项 - 它们都是独立的。
同样,可以在我的显示器中输入值。目标是能够在跨应用程序实例化的不同显示中输入不同的值,并将这些值发送到特定实例(调用者的责任)。
问题当然是:怎么做?互联网谈论提升,但我仍然没有看到 Qt Designer 中的任何地方在其他对象中包含所谓的提升对象。
TL;DR : :我希望一些现有表单出现在 Qt Designer 左侧的菜单中,以便能够以其他形式多次实例化它。如何做到这一点?
提前感谢您的帮助!
查尔斯
【问题讨论】:
也许这有帮助:“promotion”意味着 Designer 会在您使用它时在其 UI 中显示一些小部件类 X,但它生成的代码实际上将使用提升到小部件类 Y。 【参考方案1】:您可以在 Qt Designer 中将任何QWidget
提升为您的控件。添加QWidget
,右击并提升。
理想情况下,您应该为您的控件创建一个设计器插件,使相关属性可设计,并构建插件和库。这样您就可以从调色板中拖动您的控件,并且它的行为就像真实的东西一样。
【讨论】:
所以你的意思是用自己的 .pro 文件创建一个单独的项目?对我来说听起来有点矫枉过正...... @C.THIN 是的,您需要创建一个单独的项目来将您的小部件完全集成到 Qt Designer 中——这确实是一件小事。不应该超过几分钟和几行。有设计师插件的例子,它几乎是一个复制粘贴的工作。 OTOH,如果您谈论的是在不设计其特定于类的属性的情况下简单地使用您的小部件需要什么,那么您只需要右键单击并提升。任何复杂的软件最终都会有多个子项目等,这并不过分。【参考方案2】:Qt QWidget 多实例
你自己回答了。 Qt Creator:以QWidget
为基类的“文件->新建->Qt->Qt Designer Form Class”将适合您。然后,您可以将 UI 中的简单 QWidget
提升到此自定义小部件中,以创建实例。每个实例都将管理自己的 UI。
【讨论】:
我只能提升表单的第一个内部小部件,而不是全局小部件,但没问题。完成后,我在哪里可以找到我新推出的用于插入其他表单的 QWidget? 啊,我误会了。它是 caller 模块显示中的小部件,您希望将其提升为 existing 库类模块显示。但是像这样,我不能点击推广,按钮是灰色的...... 糟糕,错误的基类。现在升职了,工作!非常感谢! @C.THIN 不客气,我不认为通过推广小部件在 UI 中使用它会是困难的部分。我什至没有提到它。会解决的。以上是关于Qt QWidget 多实例的主要内容,如果未能解决你的问题,请参考以下文章
Qt学习: QStackedWidget和手工代码布局的程序实例
Qt系列文章之二十九(基于QThread的掷骰子线程实例讲解)