QT控件自适应缩放以及自适应系统字体与分辨率

研究了一天,在网上查了好多关于QT控件如何自适应系统字体的方法,后来在一本Linux环境下QT4图形界面与MySQL编程书中查到,通过布局管理器可以实现窗口尺寸改变时自动调整控件。

QT布局管理器有水平布局、垂直布局、栅格布局、窗体布局,如图1左边列表所示

QT控件自适应缩放以及自适应系统字体与分辨率_第1张图片

图1

这里我就以我实际的工程为例,在图1的右侧就是实际的资源界面,最上面是一个Tab Widget,中间是一些Button、Label等小控件,下面是一个Table Widget。首先将中间的所有小控件选中,选择布局->栅格布局,结果如图2所示

QT控件自适应缩放以及自适应系统字体与分辨率_第2张图片

图2

但发现有两个控件(紫色区域)被拉长了,想手动拉小是不行的,于是就这样先不管了,接着将上面的Tab Widget和下面的Table Widget也设置为栅格布局,刚设置完成的时候可能会显示成很小的矩形区域,但可以通过拉伸将其调整到想要的大小。

现在所有控件都设置为栅格布局(可以试试全选所有控件设置栅格布局,而不是像我分开设置,但那样好像有点问题),编译运行,发现界面可以任意拉伸、缩小、最大化,控件可以随着窗体大小变化,而且改变系统字体和分辨率都不会出现控件显示不全的问题。

那么现在再来看看刚才控件被拉伸而无法调整的问题,后来发现就在布局管理的下面,有一个Spacers(间隔器),分为水平间隔和垂直间隔,在将中间的所有小控件设置为栅格布局之前,在空白的地方添加间隔器如图3所示

QT控件自适应缩放以及自适应系统字体与分辨率_第3张图片

图3

空白地方添加完间隔器之后再设置为栅格布局,就不会出现控件被拉伸的现象了。

到此,界面布局就完美收工。这里我使用了布局管理中的栅格布局和间隔器中的水平间隔,以后看看其他几种布局和间隔器适用于什么样的界面。另外,我采用的是先放控件后设置布局的顺序,也可以先设置布局再添加控件,因为之前不考虑界面自适应缩放问题,所以就没有使用布局。

你可能感兴趣的:(工作经验总结)