【问题标题】:qt positioning controls in QMdiSubWindowQMdiSubWindow中的qt定位控件
【发布时间】:2015-03-11 14:08:22
【问题描述】:

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

当我运行应用程序时,它看起来像这样(标题栏上的按钮): 只有在最大化模式下才可以: 但我希望它总是看起来不错。 这是 .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 插件)。

【问题讨论】:

  • 你应该使用 Qt 布局。

标签: c++ qt position controls qmdiarea


【解决方案1】:

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

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

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

所以 - 一如既往:RTFM :)

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-04-06
      • 2016-06-28
      • 2011-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多