2010-05-18 57 views
1

在我的项目中,我将通过编程生成用户界面。这个UI的可伸缩性是非常重要的要求。编程用户界面建议?

到目前为止,我使用二维图形来生成用户界面。 我认为可能有不同的解决方案,但目前我只知道两个解决方案。

第一个是在我的用户界面上提供每个二维图形的X,Y坐标(我不喜欢这个解决方案,因为我不想计算每个图形的X,Y坐标,目前我没有有一个很容易做到这一点的逻辑)

第二个(目前我现在正在使用)是使用布局,根据项目的大小组织其内容。在这个解决方案中,我不必计算每个项目的X,Y坐标。 (布局正在为我做这件事。)但是这种方法可能有其自己的陷阱。

我对用户界面编程非常陌生。你能给我这个问题的建议吗?

+1

你的应用程序做什么?或者你正在尝试构建什么样的用户界面?如果您可以提供更多的细节,我认为人们可以给出更好的答案 – Jujjuru 2010-05-19 01:38:54

+0

我正在开发列车交通控制器软件项目。我负责将真实世界铁路基础设施建模为交互式用户界面。所以用户界面由铁路,铁路交换机,信号,水平线等组成。 – onurozcelik 2010-05-19 04:58:44

回答

0

有Qt设计器(GUI Builder),它允许像在Visual Studio中一样设计GUI。

手动计算X,Y是一种不好的方法 - 它绝对可以嵌入。

+0

我没有使用预定义的Qt Widgets。所以Qt Designer并没有解决我的问题。 – onurozcelik 2010-05-18 20:01:13

2

我遵循的一般规则是,除非有非常具体的理由使用绝对布局,否则应始终使用布局容器。我使用绝对布局的唯一实际情况是,当我实现一个奇怪的自定义布局时,不适合与内置布局管理器轻松配合。

布局经理会让你的生活更轻松。使用布局管理器可以更轻松地处理调整窗口大小或变化大小的内容。

我不记得每一个qt的内置布局的东西都有问题。

0

不要重新发明轮子: 从UI对象继承你的对象例如,面板,所以你可以使用这些对象的UI技术。 对于其余使用容器或任何其他布局对象

1

我假设你的铁路地图只需要是真正的轨道布局的原理图,你可以创建所有布局在网格上的组件,并为每个网格你实现一个简单的布局算法,根据你的要求,你可以说一个网格单元只能有一个实际的控制(并使单元更小),或者对于每个控制类型都有固定点的较大单元,或者只需从左到右/从上到下地安排单元格内的控件,无论您为什么工作。您也可以将细胞本身细分为子细胞以约束控制。因此,当你扩大整体尺寸时,每个细胞可以告诉控制器它应该是多大。

它也可能有助于在显示器上实现层,例如使轨道层与控制层分离。

您正在研究一个非常具体的“非传统”UI,您需要一些适合您的问题的解决方案。

我不知道你是否已经这样做了,但想想如果你可以实现数据驱动的方法来配置你的用户界面。不要对布局进行硬编码,将布局功能与实际操作部分分开,并将其移至可轻松更改的文件中。

听起来你有某种工作解决方案,但你说“我不喜欢这个解决方案,因为我不想计算每个图形的X,Y坐标”,如果你有图形控件可以放在任何地方屏幕虽然代码,但用户可以放置这些控件的编辑器可能并不是一个大步。它可能没有你想象的那么努力,特别是如果你已经为你的UI使用配置文件而不是硬编码值。

我最近做了很多工作,通过样式改变了qt元素的正常外观,但我不认为正常的qt-gui部件足以满足您的努力,但QGraphicsView子系统可能是它很好地适应并能很好地处理与大量元素的交互,但很难在不知道更多细节的情况下给出更具体的答案。