在Qt中设计GUI时,我在使用Qt Creator中的设计器或在源代码中执行所有操作时犹豫不决。我正在使用Qt小部件,而不是QML。
如果我使用设计器,我可以使用qt标准小部件轻松创建GUI。但是,只要我需要子类化小部件来扩展其功能,我就必须构建一个Designer插件来支持我的新小部件。那是对的吗?还是有另一种方式吗?
答案 0 :(得分:6)
您可以在Designer中构建包括自定义小部件在内的所有GUI,也可以在Designer中构建自定义小部件。
Designer不需要解释您的自定义小部件。只需使用推广功能即可。通过提升,您可以从Designer中的一个普通小部件开始,然后告诉它的“真实”类(您的自定义类)和它被删除的头文件。唯一的缺点是在Designer中,它将看起来像一个空的小部件。
根据我的经验,使用Designer作为GUI比自己编写源代码要好得多。您可以在之后轻松更改所有属性等,即使您依赖自定义小部件也很有用。源代码对于GUI对象来说不是一个好的声明性语言,具有所有属性等。另外你不能玩,你需要一直编译只是为了告诉“这个文本标签是否更好用粗体字?”。
有时我会手动编辑Designer创建的XML文件。例如,如果我想将一个小部件放在对象树中的其他位置。如果您没有弄乱XML,Designer仍会读取它而不会破坏您的更改。我在源代码中编写GUI的唯一原因是,当您有重复元素或基于数据输入的动态更改时,例如for() - 生成元素的循环。在我的项目中,我有一些选择框,在源代码中填充了选项。
顺便说一句:如果您更喜欢在代码中编写GUI而不是使用Designer,那么您可能不是制作GUI的合适人选。大多数程序员并不了解虽然他们在技术上能够设计GUI,但他们并不总是能够胜任。
http://hallofshame.gp.co.at/index.php?file=shame.htm&mode=original
答案 1 :(得分:2)
这是一个快捷方式,但我经常使用一个简单的QWidget作为我的自定义小部件的容器。通过这种方式,我可以设置大小调整策略,在我的自定义窗口小部件出现之前将整个内容放在我想要的布局中。然后,在C ++中,我将自定义窗口小部件添加为容器窗口小部件的子窗口。
编辑:正如ypnos所提到的,你可以直接推广占位符。你可以find guidelines here