您如何以编程方式更新 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 更新。