qt定位控件在QMdiSubWindow中

时间:2015-01-13 15:07:35

标签: c++ qt position controls qmdiarea

我在QMdiSubWindow衍生中定位控件有问题。我使用QtDesigner设计了我的窗口,它看起来像这样:Vew in QtDesigner

当我运行应用程序时,它看起来像这样(标题栏上的按钮): View of the app (mdisubwin normal) 只有在最大化模式下才能正常运行:View of the app (mdisubwin maximized) 但我希望它总是看起来不错。 这是.ui文件的一部分:

 <widget class="QPushButton" name="btnToggleEdit">
   <property name="geometry">
    <rect>
     <x>10</x>
     <y>10</y>
     <width>75</width>
     <height>23</height>
    </rect>
   </property>
   <property name="text">
    <string>Edit</string>
   </property>
  </widget>

好像它是相对于窗口角渲染的 - 无论窗口的标题栏如何...我该如何解决? 我正在使用Qt 5.2.1(和Visual Studio 2010的qt加载项)。

2 个答案:

答案 0 :(得分:1)

好吧,添加布局并没有解决问题。当然,有一个它比没有(缩放)更好,但它不是关键的事情。问题是,我错过了文档中的一个段落:

  

构建QMdiSubWindow的最常用方法是调用   QMdiArea :: addSubWindow(),内部窗口小部件作为参数。您   也可以自己创建一个子窗口,并设置一个内部窗口小部件   调用setWidget()。

我的窗口是QMdiSubWindow的子类,但我没有在任何地方调用setWidget()。这个问题可以通过在调用QMdiArea :: addSubWindow()时调用此方法,或者将我的窗口的基类更改为不同的QMdiSubWindow(例如QWidget)

来解决。

所以 - 一如既往:RTFM:)

答案 1 :(得分:0)

当您在Qt表单上放置多个QWidget时,您应该始终使用某种QLayout,解决问题的最快方法是选择表单中的所有项目,然后单击网格布局按钮(带有设计师盒顶部有3 x 3个小方块。