使用Qt Designer来设计界面

来源:互联网 发布:linux查找文件路径命令 编辑:程序博客网 时间:2024/06/15 03:30

介绍

Qt Designer,是一个直观可见的全方位 GUI 构造器,它所 设计出来的用户界面能够在多种平台上使用。它是 Qt SDK 的一部分,也是最为重要的开发 工具之一。利用 Qt Designer,我们可以拖放各种 Qt 控件构造图形用户界面并可预览效 果。

与纯代码设计界面的区别

使用designer设计的.ui文件最终还是会生成相应的.h文件,所以使用designer做的工作都可以自己亲自用代码来实现,所以如果用代码来设计界面的话,主要工作就是:

  • 创建相关的窗口部件类的对象
  • 通过调用成员函数来设置这些部件的一些属性等等
  • 创建布局管理器类来布局(想死的话也可以自己手工布局)
  • 其他,如添加资源文件,添加动作,设置信号-槽 等等

使用designer来设计界面,大大减少了程序代码量,设计起来也更加方便清晰。

使用方法

  1. 窗口部件:

    • 添加控件:从左侧的部件列表中选中需要的部件,拖到右侧的设计窗口上就可以了
    • 复制控件:按住ctrl,鼠标点击要复制的控件,按住向外拉,就得到了复制的控件
    • 删除控件:鼠标点击要删除的控件,右键删除或按delete键
    • 选中多个控件:鼠标向外拉出一个矩形,覆盖要选中的控件,或者按住ctrl,依次点击要选中的控件
    • 控件位置,大小等相关属性:详见属性编辑器和布局
      这里写图片描述
  2. 属性编辑器:可以用来编辑控件的相关属性,有从父类Widget继承而来的属性,也有自己控件独特的属性,使用时比较方便。

  3. 布局管理器的使用:
    Qt 的布局管理器负责在父窗口部件区域内构建子窗口部件。这些管理器可以使其中 的窗口部件自动定位并重新调整子窗口部件、保持窗口部件敏感度最小化的变化和默认尺 寸,并可在内容或文本字体更改时自动重新定位。在 Qt Designer 中,完全可以使用布局管理器来定位控件。

    • 布局类的继承关系: QLayout 类是 Qt 的几何管理器的基类,它派生自 QObject 类和 QLayoutItem 类,是一 个抽象基类,必须被派生类所重新实现。它的派生类主要有 QBoxLayout, QGridLayout, QFormLayout 以及 QStackedLayout。而 QBoxLayout又派生出QHBoxLayout和QVBoxLayout2个子类。除了这些内建布局器,常用的还有QSplitter分裂器布局,QSpacerItem弹簧。

    • 布局管理器的属性设置:以下图QVBoxLayout为例,layoutLeftMargin,layoutRightMargin。。。这4个属性用于设置布局内的控件距布局边缘(上,下,左,右)的空白距离。layoutSpacing这个属性用于设置布局内的控件之间的空白距离。还有其他一些属性,这里不再列举。
      这里写图片描述

    • 顶级布局:在将所有控件布局完成后,还需要点一下主窗口,然后再选择一种布局,称之顶级布局。如果不设顶级布局的话,控件无法与主窗口建立起联系,这样在主窗口大小改变时控件不能随之变化。

    • 常见布局器的使用及效果

布局 说明 效果 详细 Box水平或垂直布局 将选中的界面元素置于一个水平或垂直布局中 这里写图片描述 请看 Grid栅格布局 将选中的界面元素置于一个栅格布局中,每个控件占据一块方形格子 这里写图片描述 请看 Form表单布局 将控件以两列的形式布局在表单中。左列标签label,右列输入控件如LineEdit 这里写图片描述 请看 Splitter分裂器布局 创建一个分裂器水平或垂直布局,选中的控件长度可由用户在水平或垂直方向上拖动 这里写图片描述 请看 Spacer间隔布局 像弹簧一样,占据空白空间,用于限制控件扩展和控制控件之间间隔 这里写图片描述 请看

4.窗口控件的大小控制
要想在布局时和主窗口大小改变时控制控件的大小,QWidget里有一些方法如下:
- sizeHint:这个属性所保存的QSize的值是一个推荐这个窗体尺寸的一个值,sizeHint() 函数会返回这个推荐值
- minimumSizeHint:与sizeHint一样,只不过这个属性保存的是推荐这个窗体最小尺寸的一个值
- minimumSize和maximumSize:这2个属性保存的是窗体的最小尺寸和最大尺寸,窗体的尺寸被限制在这2个尺寸之间,可以自己设置。
- sizePolicy:这个属性用于设置窗体在 水平/垂直 方向上的伸展属性,在窗体没有被布局的情况下是不起作用的,QSizePolicy::Policy 枚举值有如下几个:

属性值 描述 QSizePolicy::Fixed widget 的实际尺寸只 参考 sizeHint() 的返回值,当主窗口在水平/垂直方向上大小改变时它不能随之变化 QSizePolicy::Minimum 可以随主窗口伸展收缩,不过widget尺寸不能小于sizeHint() QSizePolicy::Maximum 可以随主窗口伸展收缩,不过widget尺寸不能大于sizeHint() QSizePolicy::Preferred 可以随主窗口伸展收缩,但在争夺空白空间上没有优势 QSizePolicy::Expanding 可以随主窗口伸展收缩,在布局时它会尽可能多地去获取额外的空间,也就是比 Preferred 更具优势 QSizePolicy::MinimumExpanding 可以随主窗口伸展收缩,不过widget尺寸不能小于sizeHint(),同时它比 Preferred 更具优势去获取额外空间 QSizePolicy::Ignored 忽略 sizeHint() 的作用

Ps:影响布局后窗体的大小还有其他因素,比如不同的布局方案就会有影响…

原创粉丝点击