10.1.1 Widget 部件

admin 2022年10月10日14:20:44评论41 views字数 1431阅读4分46秒阅读模式

本章所学的就是设计师界面的几个控件容器,如图所示:

10.1.1 Widget 部件

Widget 容器就是 QWidget 类,与我们之前学习的窗口类是同一个类。QWidget 作为独立窗口时,有自己的标题栏和边框,但是作为窗口内部的控件容器时,没有边框,只是简单的一块背景板,里面放置一些子控件。在设计师界面能看到 Widget 容器的虚线边框,但是运行时,Widget 容器默认没有边框。
Widget 容器的典型应用一是将不同功能的单选框分组,不同容器的单选框自动分在各自的组别;
第二个应用举例,是放置在容器中的控件,子控件排布是跟随父级容器的,拖动父级容器,子控件总是与父级容器对齐,并且父级容器有自己独立的布局器。
第三个应用举例,例如控件太多了,希望使用滚动区域时,QScrollArea 必须指定唯一的 widget 作为滚动对象,那么我们将一堆子控件塞到一个 widget 容器里面,然后将包裹好的大容器 widget 作为 QScrollArea 的唯一滚动对象。
下面我们打开 Qt 设计师举例,选择 Widget 窗口模板:

10.1.1 Widget 部件

点击“创建”按钮,进入界面编辑,将窗口大小设置为 480*400:

10.1.1 Widget 部件
然后拖入三个单选按钮和一个 Widget 容器,三个单选按钮文本改为 “red”、“blue”、“green”,然后将 Widget 容器大小设置为 180*140,如下图所示:
10.1.1 Widget 部件
这是我们按住 Ctrl 键,选中红蓝绿三个单选按钮,然后将按钮往虚线框的 Widget 容器里面拖入,看到拖入子控件的效果:
10.1.1 Widget 部件
拖入子控件时,Widget 容器背景色变深,方格子点阵也临时隐藏,这时候松开鼠标,三个单选按钮就归属于 Widget 父级容器。如下图所示:
10.1.1 Widget 部件
这种操作方式是先新建三个单选按钮、Widget容器,将三个单选按钮拖入父级容器。
下面我们再拖入一个 Widget 容器,大小也设置为 180*140,与上一个的容器放在不重叠位置:
10.1.1 Widget 部件
然后在 Qt 设计师左边控件栏依次拖入三个单选按钮到窗口下半部分的 Widget 容器中,并设置文本为 “small”、“middle”、“large”:
10.1.1 Widget 部件
从设计师左边栏目拖入控件进入下面容器之后,控件自动成为容器的子控件。我们点击容器的空白位置,然后可以拖动容器移动:
10.1.1 Widget 部件
可以看到子控件自动锚定父容器,跟随父容器移动而移动。下面我们学习一个操作,就是为容器指定内部布局,我们点击上面容器内部的空白位置,或者在设计 师右上角 “对象查看器”直接点击选定该容器:
10.1.1 Widget 部件
选中容器对象后,点击设计师上面的垂直布局按钮,然后可以看到容器内部变成带布局器的情况:
10.1.1 Widget 部件
容器尺寸自动缩小了,因为布局器计算了子控件需要的最小长宽尺寸,父级容器自动缩小到最小的合适尺寸。
然后我们再选中窗口下面的容器,然后也是点击垂直布局按钮,形成如下的界面:
10.1.1 Widget 部件
现在窗口就只有两个儿子控件,就是两个 Widget 容器,单选按钮就是孙子级的控件,孙子级控件由父级容器控制,而不需要主窗口管理布局。我们只需要对主窗口的两个儿子控件容器进行布局,我们选中根级的主窗口,然后再次点 击垂直布局按钮,就能完成窗口整体的布局:
10.1.1 Widget 部件
完成整体布局后,我们点击设计师菜单“窗体”-->“预览”,或者按快捷键 Ctrl+R ,弹出预览窗口,我们点击六个单选按钮,可以看到前三个单选按钮互斥,后面三个单选按钮互斥,不同容器内部的单选按钮自动分为不同的组别:
10.1.1 Widget 部件
Widget 容器的使用示范到这里,我们下面学习带边框 Frame 容器。
摘自https://qtguide.ustclug.org/

原文始发于微信公众号(汇编语言):10.1.1 Widget 部件

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年10月10日14:20:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   10.1.1 Widget 部件http://cn-sec.com/archives/1292827.html

发表评论

匿名网友 填写信息