【问题标题】:Programming user interface advice?编程用户界面建议?
【发布时间】:2010-05-18 19:50:27
【问题描述】:

在我的项目中,我将通过编程生成一个用户界面。这个 UI 的可扩展性是非常重要的要求。

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

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

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

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

【问题讨论】:

  • 您的应用程序是做什么的?或者您正在尝试构建什么样的用户界面?我认为如果你能提供更多细节,人们可能会给出更好的答案
  • 我正在开发一个火车交通控制器软件项目。我负责将现实世界的铁路基础设施建模为交互式用户界面。所以 UI 由铁路、铁路道岔、信号、平交道口等组成。

标签: c++ qt user-interface


【解决方案1】:

我遵循的一般规则是您应该始终使用布局容器,除非您有非常具体的理由使用绝对布局。我唯一真正使用绝对布局的时候是在我实现一个奇怪的自定义布局时,这种布局并不适合内置的布局管理器。

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

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

【讨论】:

    【解决方案2】:

    我假设您的铁路地图只需要是真实轨道布局的示意图,您可以创建全部布局在网格上的组件,并且根据您的要求为每个网格单元实现一个简单的布局算法您可以只声明一个网格单元格上只能有一个实际控件(并使单元格更小),或者对于较大的单元格,您对每种类型的控件都有固定点,或者只是在一个单元格中从左到右排列控件/从上到下,任何适合你的东西。您还可以将单元格本身细分为子单元格以约束控件。这样当你缩放整体时,每个单元格就可以告诉控件它应该是什么大小。

    它也可能有助于在显示器上将事物实现为层,例如将轨道层与控制层分开。

    您正在开发一个非常具体的“非传统”用户界面,您将需要一些适合您的问题的解决方案。

    我不知道你是否已经这样做了,但想想你是否可以为你的 UI 配置实现一种数据驱动的方法。不要对布局进行硬编码,将布局功能与实际操作部分分开,并将它们移动到易于更改的文件中。

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

    我最近做了很多工作,通过样式改变 qt 元素的正常外观,但我认为正常的 qt-gui 部分不足以满足您的工作,但 QGraphicsView 子系统可能是非常合适,它可以很好地扩展并很好地处理与大量元素的交互,但是如果不了解更多细节,很难给你一个更具体的答案

    【讨论】:

      【解决方案3】:

      Qt Designer (GUI Builder) 允许像在 Visual Studio 中一样设计 GUI。

      手动计算 X,Y 是一种不好的方法 - 它绝对无法扩展。

      【讨论】:

      • 我没有使用预定义的 Qt 小部件。所以 Qt Designer 并没有解决我的问题。
      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2010-11-12
        • 1970-01-01
        • 2012-04-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-31
        • 1970-01-01
        相关资源
        最近更新 更多