如何在Qt Designer UI文件中清除QMainWindow的几何标记

时间:2017-08-01 16:44:59

标签: c++ qt qt5 qt-designer uic

Qt Designer添加一个几何标记,其中包含小部件的默认大小(绝对单位(像素))。

这真的很烦人,因为如果您在4k监视器上编辑ui文件,则所有ui(默认情况下)将在较低的DPI系统上显示大量空白区域。

如果我手动删除此标记,我的窗口在首次显示时具有预期的大小,但每次在Qt Designer中打开它时手动编辑每个ui文件都会出错。

我使用的是Qt 5.9。

阻止Qt Designer添加此XML标记的范式是什么?

example.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Example</class>
 <widget class="QMainWindow" name="Example">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>970</width>
    <height>1371</height>
   </rect>
  </property>

2 个答案:

答案 0 :(得分:6)

我可以在Qt Designer中删除几何标记,如下所示:

  1. 打开一个新的主窗口表单
  2. 在“属性编辑器”
  3. 中选择几何
  4. 点击右侧的红色箭头
  5. 这会自动调整表单大小 - 但手动调整大小不会恢复几何标记。但是,如果表单有菜单栏,它还会为其添加几何标记。因此,在Object Inspector中选择菜单栏,然后重复上面的步骤2和3。完成后,我得到了这个输出:

    <?xml version="1.0" encoding="UTF-8"?>
    <ui version="4.0">
     <class>MainWindow</class>
     <widget class="QMainWindow" name="MainWindow">
      <property name="windowTitle">
       <string>MainWindow</string>
      </property>
      <widget class="QWidget" name="centralwidget"/>
      <widget class="QMenuBar" name="menubar"/>
      <widget class="QStatusBar" name="statusbar"/>
     </widget>
     <resources/>
     <connections/>
    </ui>
    

    添加其他小部件/菜单/布局并调整表单大小后,几何标记永远不会再出现。这都是在Linux上使用Qt Designer 5.10.1进行测试的。

答案 1 :(得分:1)

我没有一个解决方案来阻止Designer写这个,我经常发现只需通过代码恢复已经完成的工作就更简单了。

在这种情况下,我建议在主窗口的构造函数末尾添加对setSize(sizeHint())的调用。