您如何以编程方式更新 Qt 中的 UI?

Posted

技术标签:

【中文标题】您如何以编程方式更新 Qt 中的 UI?【英文标题】:How do you programatically update the UI in Qt? 【发布时间】:2013-06-18 02:03:05 【问题描述】:

我对 Qt 还很陌生,我正试图围绕信号和插槽进行研究。虽然我已经弄清楚如何创建自定义插槽,但我还没有弄清楚如何从我的 C++ 代码更新 GUI。我意识到,我在设计器中创建的整个 UI 只是用看似基于 XML 的 UI 代码编写的。我是否必须手写自己的 Qt C++ UI 才能更新界面,或者我可以以某种方式使用 C++ 来更新基于 XML 的 UI?我只是想在单击按钮时向主窗体添加一个小部件。任何帮助表示赞赏。谢谢!

【问题讨论】:

您知道uic 和moc 工具吗? (答案是肯定的,你可以在 C++ 中做你想做的事,这就是这些工具的帮助。) 【参考方案1】:

要将小部件添加到表单中,您只需这样做

ui->layout()->addWidget(new Widget);

QtDesigner 使用 XML 作为创建、更新和持久化 GUI 的一种方式,支持可视化 方法进行开发,但最终您可以完全构建应用程序 em> 没有它。

【讨论】:

【参考方案2】:

您不必更新 UI 的 xml。您可以使用 setupUi 将 ui 继承到您自己的类中 http://crpppc19.epfl.ch/doc/qt4-doc-html/html/qwidget.html#setupUi

现在在您的 C++ 类中,您可以更新小部件,例如更改标签文本、lineEdit 文本、使用 Signals & slot 设置 spinbox 值。

【讨论】:

【参考方案3】:

该 xml 由 Qt 设计器使用,而在设计器之外它仅被 uic 用作生成 C++ 代码的源,因此您在设计器中所做的一切最终都作为 C++ 代码,因此可以更新(或完全完成)在 C++ 代码中(您可以查看代码并看到您很可能有一个名为 ui 的成员,它很可能是一个指针,但它也可以是 C++ 类的一个实例由 uic 为您生成,通过该 ui 成员,您可以访问您在设计器中创建的小部件和布局)。

我建议您阅读的通用资源可以在 here 找到,然后(如果您仍然无法弄清楚)询问有关您到底想要实现什么的具体问题。 LE:该链接包含 3 种将生成的代码用于 C++ 代码的方法,不要将它们全部尝试到您的工作项目中,您可以选择一种方法或使用默认的一种方法(ui 成员指针)

【讨论】:

以上是关于您如何以编程方式更新 Qt 中的 UI?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式更新 UITextView maximumNumberOfLines 并查看 UI 更新。

如何以编程方式关闭 chakra Ui 中的抽屉

如何在不“连接”它们的情况下以编程方式访问 NIB 中的 UI 元素?

您如何以编程方式添加 UI/视图控制器?

以编程方式停止 iOS 中的应用升级

从 uic 输出到 Qt 中的 C++ 代码