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>")! ! ...
1 <?xml version="1.0" encoding="UTF-8"?> 2 <ui version="4.0"> 3 <class>MainWindow</class> 4 <widget class="QMainWindow" name="MainWindow"> <!-- ZC: 主界面窗口 --> 5 <property name="geometry"> 6 <rect> 7 <x>0</x> 8 <y>0</y> 9 <width>599</width> 10 <height>359</height> 11 </rect> 12 </property> 13 <property name="windowTitle"> 14 <string>MainWindow</string> 15 </property> 16 17 <widget class="QWidget" name="centralWidget"> <!-- ZC: 主界面上的centralWidget,它的布局为QGridLayout --> 18 <layout class="QGridLayout" name="gridLayout"> 19 20 <item row="1" column="0"> <!-- ZC: 第1行第0列 --> 21 <layout class="QGridLayout" name="gridLayout_2"> <!-- ZC: 这里将唯一的元件openGLWidget放在栅格布局中它会填充整个栅格布局 --> 22 <item row="0" column="0"> 23 <widget class="WndGL_Z" name="openGLWidget" native="true"/> 24 </item> 25 </layout> 26 </item> 27 28 <item row="0" column="0"> <!-- ZC: 第0行第0列 --> 29 <widget class="QWidget" name="widget" native="true"> 30 <property name="minimumSize"> 31 <size> 32 <width>0</width> 33 <height>100</height> <!-- ZC: 这里设置 最小高度值 --> 34 </size> 35 </property> 36 <property name="maximumSize"> 37 <size> 38 <width>16777215</width> 39 <height>100</height> <!-- ZC: 这里设置 最大高度值 --> 40 </size> 41 </property> 42 43 <widget class="QPushButton" name="pushButton"> 44 <property name="geometry"> 45 <rect> 46 <x>10</x> 47 <y>10</y> 48 <width>75</width> 49 <height>23</height> 50 </rect> 51 </property> 52 <property name="text"> 53 <string>PushButton</string> 54 </property> 55 </widget> 56 57 </widget> 58 </item> <!-- ZC: 第0行第0列 结束 --> 59 60 </layout> <!-- ZC: "gridLayout"结束 --> 61 </widget> <!-- ZC: "centralWidget"结束 --> 62 63 </widget> <!-- ZC: "MainWindow"结束 --> 64 65 <layoutdefault spacing="6" margin="11"/> 66 <customwidgets> 67 <customwidget> 68 <class>WndGL_Z</class> 69 <extends>QOpenGLWidget</extends> <!-- ZC: 注意这里,不能是QWidget(这个就是普通的控件了) --> 70 <header>wndgl_z.h</header> 71 </customwidget> 72 </customwidgets> 73 <resources/> 74 <connections/> 75 </ui>
3、
4、
5、