1

我正在编写一个 Qt 应用程序,该应用程序最初将部署在 Mac 和 Linux 上。我在 Linux 中进行开发,因此我可以花费所有时间来确保所有小部件和布局都完全符合我的要求。不幸的是,我无法长时间使用 Mac 进行开发。在很多情况下,小部件和布局需要进行小幅(有时是大幅)调整才能在 Mac 上看起来不错。如果没有构建特定于 Mac 的 UI 或使用平台检测,我怎样才能让自己更轻松?我遇到的最大问题是字体大小、小部件之间的间距和小部件的对齐方式。有小费吗?我认为肯定会有 Qt 的样式指南,但也许我只是在问错误的问题。

4

1 回答 1

1

我刚刚写了一些非常相似的东西来回答关于 CSS 的问题。但总的来说,这实际上取决于您的用户界面有多广泛。它真的处于“每个像素都很重要”的水平,还是你可以忍受一些小问题?

QT 本身做了很多工作来使你的界面看起来一样,而且你甚至有像 CSS 这样的特性来使应用程序在不同的平台上看起来确实一样,独立于原生控件的外观。

对于一些花哨的实用程序来说,这可能是一种非常有趣的方法,但是如果我们谈论的是复杂的桌面应用程序,我坚信尽可能让用户使用本机控件是一种非常正确的方法(考虑到用户体验,应用程序的适配程度)在周围等)..

这就是问题开始的地方。不幸的是,Qt 布局管理器在 Linux/MacOSX/Win32 上的工作方式并不完全相同。有时在某些平台上存在明显的错误,例如将布局本身的宽度计算为“1”,这是完全错误的。

同样适用于控件boundingRects,您也完全正确地提到了字体等。

我将尝试总结如何解决它(根据我的经验)。如果有经验的 Qt 开发人员加入会更高兴,所以我们可以用它制作某种 WiKi,因为这是非常有趣和常见的问题。

1) 每个平台使用 UILoaders 和/或不同的 UI 集。

我倾向于使用动态 UI 加载而不是静态编译已经有一段时间了。它有几个原因,例如将视图和控制器类分开,只需更改一组 UI 文件即可交付“特殊”版本的能力等。其中一点是,通过为每个平台制作 UI 文件,您可以调整它们以适应考虑所有平台细节并获得非常漂亮的界面。您可以通过 .pro 文件中的条件对静态 UI 执行相同的操作。

2)使界面“宽”到足以隐藏可见的变化。我不确定“宽”是否是一个正确的词,但是,您不会将 Qt 推到您开始注意到 UI 中的许多差异的限制,这主要意味着您保持表单/对话框相当简单组件之间有足够的空间。这有一个很大的缺点 - 每个 UI 通常都会占用更多空间(在 boundingRect 的意义上),如果每个平台都仔细完成它可以做到这一点。

3) CSS 使用.. 老实说,我不知道.. 我看到了几个非常好的项目,其中 CSS 确实发挥了作用,但它仍然为每个平台分离 CSS,有时非常复杂/有条件,因为相同的控件在不同的布局需要不同的样式。

于 2013-08-13T08:00:42.117 回答