如何跨平台保持一致的Qt样式?

时间:2013-08-13 03:08:45

标签: macos qt cross-platform

我正在编写一个Qt应用程序,该应用程序最初将部署在Mac和Linux上。我正在Linux中开发,所以我能够花费所有时间来确保所有小部件和布局都是我想要的。不幸的是,我无法在Mac上进行任何长时间的开发。在很多情况下,小部件和布局需要在Mac上进行微调(有时是主要的)调整才能看起来很好。如果没有构建特定于Mac的UI或使用平台检测,我怎样才能让自己更容易?我遇到的最大问题是字体大小,小部件之间的间距以及小部件的对齐等。有小费吗?我确信Qt会有一个造型指南,但也许我只是在问错误的问题。

1 个答案:

答案 0 :(得分: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分离,有时真的很复杂/有条件,因为事实相同不同布局的控件需要不同的样式。