Mac和Windows / Linux之间的不同布局(相同的* .ui文件)

时间:2015-12-04 13:43:48

标签: c++ linux windows macos qt

我正在使用Qt Framework部署我的应用程序。 在Windows和Linux中,布局的行为是相同的;如果我调整窗口大小,布局就会适应。这在Mac OS中不会发生。要为Mac开发,我使用虚拟机(分辨率为1024x768),但是,当我尝试在" true" Mac(分辨率最大)结果太糟糕了!

我放了一些照片:

MAC - 虚拟机(1024x768) - 第一个标签(OK)

MAC - virtual machine (1024x768) - First tab (OK)

MAC - 虚拟机(1024x768) - 第二个选项卡(不正常)**

MAC - virtual machine (1024x768) - Second tab (Not OK)

**第二个标签" Rubrica Contatti"设计就像第一个标签" Ricettario"。在设计师中,第二个选项卡似乎没问题,在运行时没有!

我试图创建一个新项目进行测试。 我已使用表单布局设置中央窗口小部件。 我创建了2个包含这些项目的小部件(每个小部件都有一个网格布局):

  • LineEdit
  • 组合框
  • 包含2个标签和2个复选框的GroupBox(带网格布局)

所有这三个项目都以垂直布局聚类。我将左侧小部件放在 QSizePolicy :: Minimum 中,将右侧小部件放在 QSizePolicy :: Preferred 中。在Qt Designer中,左侧面板较小,右侧面板水平放大。当我启动应用程序时,两个小部件具有相同的宽度并位于窗口的中心。

  

注意:
  当我打开任何项目时,我会在" General Messages" 中收到此文本。

Warnings while parsing QML type information of /Users/denny/Qt/5.5/clang_64/qml:  
<dump of /Users/denny/Qt/5.5/clang_64/qml>:1:24: Reading only version 1.1 parts.  
<dump of /Users/denny/Qt/5.5/clang_64/qml>:10:5: Expected only Component and ModuleApi objects definitions. 

可能是原因吗?

3 个答案:

答案 0 :(得分:1)

问题仍然存在,但它解决了(现在)......

QApplication::setStyle("fusion");  

我的应用程序不会使用Mac主题,但会使用Fusion主题......

  

注意:
  图形更加丑陋,但它有效!

答案 1 :(得分:0)

  • 对于左侧的面板,将水平size policies设置为 QSizePolicy::Minimum。这意味着这个小部件可以更大,但没有必要扩展它
  • 对于右侧的面板,请将水平尺寸策略设置为 QSizePolicy::Preferred。这意味着如果有空间可以进一步使用它

将左侧面板小部件放在单个小部件中,将右侧面板小部件放在另一个小部件中,然后使用表单布局。表单布局通常为左右设置正确的大小策略。

答案 2 :(得分:0)

发生这种情况是因为不同的样式使用了不同的扩展策略。 例如,QFormLayout处理枚举QFormLayout :: FieldGrowthPolicy。

QFormLayout::FieldsStayAtSizeHint-这是QMacStyle的默认设置。

QFormLayout::AllNonFixedFieldsGrow-这是大多数样式的默认策略。

QFormLayout::ExpandingFieldsGrow-这是Plastique的默认策略。