ZC:Delphi中只要随便拖几个控件,设置一下属性就OK了。但是,Qt中 貌似没有 方便的方式来做这个...
ZC:目前的解决方案是:Qt中 拖几个控件,然后点 工具条里面的 "栅格布局(G)"
1、想实现 类似 Delphi 中的效果:跟着 窗口大小变,上面部分的控件 不动。如下图,上面2个 button不动,下面的 Memo随着窗口的大小变化而变化:
2、20190404 暂时的方案:
主要思想:主界面 栅格布局,分成上下两部分:
上半部分 将 最小高度和最大高度 设置成一样的(这样上半部分的高度就固定了),
下半部分的高度将自动填充剩余部分(如果不行的话,还可以尝试 设置 属性rowspan/colspan)
结构:
主界面 栅格布局
上半部分--> QWidget --> 里面可以放置 QPushButton等控件
下半部分--> QGridLayout --> 里面只有一个 自定义的控件"WndGL_Z"(继承自类"QOpenGLWidget")
(1)、效果图
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、