ZC:Delphi中只要随便拖几个控件,设置一下属性就OK了。但是,Qt中 貌似没有 方便的方式来做这个...

ZC:目前的解决方案是:Qt中 拖几个控件,然后点 工具条里面的 "栅格布局(G)"

    Qt532界面.ZC测试-LMLPHP

1、想实现 类似 Delphi 中的效果:跟着 窗口大小变,上面部分的控件 不动。如下图,上面2个 button不动,下面的 Memo随着窗口的大小变化而变化:

  Qt532界面.ZC测试-LMLPHP

    Qt532界面.ZC测试-LMLPHP

2、20190404  暂时的方案:

  主要思想:主界面 栅格布局,分成上下两部分:

   上半部分 将 最小高度和最大高度 设置成一样的(这样上半部分的高度就固定了),

   下半部分的高度将自动填充剩余部分(如果不行的话,还可以尝试 设置 属性rowspan/colspan)

  结构:

   主界面 栅格布局

    上半部分--> QWidget --> 里面可以放置 QPushButton等控件

    下半部分--> QGridLayout --> 里面只有一个 自定义的控件"WndGL_Z"(继承自类"QOpenGLWidget")

 (1)、效果图

  Qt532界面.ZC测试-LMLPHP

  PS:截图时,鼠标正拖动着pushButton,∴ 没有截到它

 (2)、ui 源码:(使用的话,注意:不知直接带注释 复制粘贴到ui文件是否OK)

  ZC:有时修改了 ui文件的某些内容后,需要重启Qt才能生效(如下面的"<extends>QOpenGLWidget</extends>")! ! ...

 <?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">  <!-- ZC: 主界面窗口 -->
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>599</width>
<height>359</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property> <widget class="QWidget" name="centralWidget">  <!-- ZC: 主界面上的centralWidget,它的布局为QGridLayout -->
<layout class="QGridLayout" name="gridLayout"> <item row="1" column="0"> <!-- ZC: 第1行第0列 -->
<layout class="QGridLayout" name="gridLayout_2"> <!-- ZC: 这里将唯一的元件openGLWidget放在栅格布局中它会填充整个栅格布局 -->
<item row="0" column="0">
<widget class="WndGL_Z" name="openGLWidget" native="true"/>
</item>
</layout>
</item> <item row="0" column="0"> <!-- ZC: 第0行第0列 -->
<widget class="QWidget" name="widget" native="true">
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>  <!-- ZC: 这里设置 最小高度值 -->
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>100</height>  <!-- ZC: 这里设置 最大高度值 -->
</size>
</property> <widget class="QPushButton" name="pushButton">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>75</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget> </widget>
</item> <!-- ZC: 第0行第0列 结束 --> </layout> <!-- ZC: "gridLayout"结束 -->
</widget> <!-- ZC: "centralWidget"结束 --> </widget> <!-- ZC: "MainWindow"结束 --> <layoutdefault spacing="6" margin="11"/>
<customwidgets>
<customwidget>
<class>WndGL_Z</class>
<extends>QOpenGLWidget</extends> <!-- ZC: 注意这里,不能是QWidget(这个就是普通的控件了) -->
<header>wndgl_z.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

3、

4、

5、

05-11 20:13