3

在 Qt 中设计 GUI 时,我在使用 Qt Creator 中的设计器还是在源代码中做所有事情之间犹豫不决。我使用的是 Qt 小部件而不是 QML。

如果我使用设计器,我可以使用 qt 标准小部件轻松创建 GUI。但是一旦我需要子类化一个小部件来扩展它的功能,我就必须构建一个 Designer 插件来支持我的新小部件。那是对的吗?或者有其他方法吗?

4

2 回答 2

6

您可以在 Designer 中构建所有 GUI,包括自定义小部件,也可以在 Designer 中构建自定义小部件。

Designer 不需要解释您的自定义小部件。只需使用提升功能。使用promote,您从Designer 中的一个普通小部件开始,然后告诉它的“真实”类(您的自定义类)以及它被清除的头文件。唯一的缺点是在 Designer 中,它看起来像一个空的小部件。

根据我的经验,使用 GUI 设计器比自己编写源代码要好得多。您可以在之后轻松更改所有属性等,即使您依赖自定义小部件也很有帮助。对于具有所有属性等的 GUI 对象,源代码不是一种很好的声明性语言。此外,您不能随意玩耍,您需要一直编译以告诉“将此文本标签以粗体显示更好吗?”。

有时我会编辑由 Designer 手动创建的 XML 文件。例如,如果我想在对象树的其他地方放置一个小部件。如果您没有弄乱 XML,Designer 仍会读取它并且不会破坏您的更改。我看到在源代码中编写 GUI 的唯一原因是当您有重复的元素或基于数据输入的动态变化时,例如产生元素的 for() 循环。在我的项目中,我有一些选择器框,其中填充了源代码中的选项。

顺便说一句:如果您更喜欢用代码编写 GUI 而不是使用 Designer,那么您可能不是制作 GUI 的合适人选。大多数程序员不明白,虽然他们在技术上能够设计 GUI,但他们并不总是能够胜任。

http://hallofsham.gp.co.at/index.php?file=shame.htm&mode=original

于 2013-05-07T11:18:04.023 回答
2

这是一个捷径,但我经常使用一个简单的 QWidget 作为我的自定义小部件的容器。这样,我可以设置大小调整策略,在我的自定义小部件出现之前将整个内容放在我想要的布局中。然后,在 C++ 中,我将自定义小部件添加为容器小部件的子级。

编辑:正如 ypnos 提到的,您可以直接提升占位符。你可以在这里找到指南

于 2013-05-07T11:25:11.790 回答