Qt中的自适应布局策略

本文最后更新于:2023年3月20日 晚上

Qt控件在窗体中的自适应布局

  为了Qt窗体在缩放的时候能够保证控件能够自适应地随着窗体进行尺寸变化,我们需要在窗口设计过程中考虑,窗体内控件的布局方式,以达到美观的效果。

一、Qt布局layout

  Vertical Layout(垂直布局)

  Horizontal Layout(水平布局)

  Grid Layout(栅格布局)

  Form Layout(窗体布局)

  以Horizontal Layout(水平布局)为例,进行相关参数讲解

(1)外边距设置

外边距包括layoutLeftMargin(左边距)、layoutTopMargin(上边距)、layoutRightMargin(右边距)、layoutBottomMargin(底边距),设置左边距20上边距20,效果如下所示。

水平布局Margin

(2)间隔设置

间隔设置layoutSpacing是指布局当中控件之间的间隔大小,设置间隔为50,效果如下所示。

间隔设置

(3)拉伸设置

拉伸设置layoutStretch是指控件在布局中所占比例,各控件依照此比例进行缩放显示,但也不能无条件地拉伸压缩,这还与控件所设置的sizepolicy策略有关,拉伸因子默认为(0,0,0,0),设置拉伸因子为(1,2,3,4),效果如下。

拉伸设置

(4)分裂器Splitter

分裂器也属于布局中的一种,效果为在控件之间添加一个可拖动改变两个控件大小的拖动条,可以改变两个控件之间所占比例,效果如下。

分裂器

(5)sizePolicy尺寸控制策略

控件的sizePolicy说明了控件在布局管理中的缩放方式。Qt提供的控件都有一个合理的缺省sizePolicy,但是这个缺省值有时不能适合所有的布局,开发人员经常需要改变窗体上的某些控件的sizePolicy。一个QSizePolicy的所有变量对水平方向和垂直方向都适用。下面列举 了一些最常用的值:

A. Fixed:控件不能放大或者缩小,控件的大小就是它的sizeHint; 大小不能改变

B. Minimum:控件的sizeHint为控件的最小尺寸。控件不能小于这个sizeHint,但是可以放大;

C. Maximum:控件的sizeHint为控件的最大尺寸,控件不能放大,但是可以缩小到它的最小的允许尺寸;

D. Preferred:控件的sizeHint是它的sizeHint,但是可以放大或者缩小;

E. Expandint:控件可以尽可能增大或者缩小;

注:sizeHint(布局管理中的控件默认尺寸,如果控件不在布局管理中就为无效的值),布局中修改控件的minimumSize或maximumSize会更改Minimum和Maximum布局策略的SizeHint大小。

二、Qt窗口控件显示美化技巧

(1)窗口居中显示

1
2
3
#include <QDesktopWidget>
w.move((QApplication::desktop()->width() - w.width()) / 2,
(QApplication::desktop()->height() - w.height()) / 2);

(2)程序窗口屏幕适应性

1
2
// 解决预览与显示不一致【分辨率高的屏幕适应性问题】
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!