在我的项目中,我将通过编程生成用户界面。此UI的可伸缩性是非常重要的要求。
到目前为止,我正在使用二维图形来生成UI。 我想可能有不同的解决方案,但目前我只知道两个。
第一个是在我的UI上提供每个二维图形的X,Y坐标。(我不喜欢这个解决方案,因为我不想计算每个图形的X,Y坐标。目前我还没有这样做的逻辑很容易)
第二个(目前我正在使用)是使用布局,根据项目的大小来组织其内容。在这个解决方案中,我不必计算每个项目的X,Y坐标。 (布局正在为我这样做。)但这种方法可能有其自身的缺陷。
我对用户界面编程很陌生。你能就这个问题给我建议吗?
答案 0 :(得分:2)
我遵循的一般规则是,除非您有非常具体的理由使用绝对布局,否则应始终使用布局容器。我使用绝对布局的唯一实际情况是当我实现一个不太适合内置布局管理器的奇怪的自定义布局时。
布局管理员将让您的生活更轻松。使用布局管理器可以更轻松地处理调整大小窗口或可变大小的内容。
我记不起每个qt的内置布局都有问题。
答案 1 :(得分:1)
我假设您的轨道地图只需要是真实轨道布局的示意图,您可以创建全部布置在网格上的组件,并且对于每个网格单元,您可以实现简单的布局算法,具体取决于您的要求你可以说一个网格单元只能对它有一个实际控制(并使单元格更小),或者对于更大的单元格,你可以为每种类型的控件设置固定的点,或者只是从左到右排列一个单元格中的控件/从上到下,无论对你有用。您还可以将单元格细分为子单元以约束控件。因此,当您缩放整体时,每个单元格可以告诉控件它应该是多大。
它可能也有助于在显示器上实现图层,例如使轨道图层与控制图层分开。
你正在研究一个非常具体的“非传统”用户,你需要一些适合你问题的解决方案。
我不知道您是否已经这样做了,但想想您是否可以为UI配置实施数据驱动方法。不要对布局进行硬编码,将布局功能与实际操作部分分开,并将它们移动到可以轻松更改的文件中。
听起来你有某种工作解决方案,但你说“我不喜欢这个解决方案因为我不想计算每个图形的X,Y坐标”,如果你有图形控件可以放在任何地方通过代码屏幕,拥有一个用户可以放置这些控件的编辑器可能不是一个很大的步骤。它可能没有您想象的那么多,特别是如果您已经为UI使用配置文件而不是硬编码值。
我最近做了很多工作,通过样式改变了qt元素的正常外观,但我不认为正常的qt-gui部分对你的努力是足够的,但是QGraphicsView
子系统会可能是一个很好的契合,它可以很好地扩展并很好地处理与大量元素的交互,但是在不了解更多细节的情况下很难给出更具体的答案
答案 2 :(得分:0)
有Qt Designer(GUI Builder),可以像在Visual Studio中一样设计GUI。
手工计算X,Y是一种不好的方法 - 它是绝对可以推卸的。
答案 3 :(得分:0)
不要重新发明轮子: 从UI对象继承您的对象,例如面板,以便您可以使用这些对象的UI技术。 其余使用容器或任何其他布局对象