Qt布局

Posted pingfandfy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt布局相关的知识,希望对你有一定的参考价值。

  Qt有很多种方法来排列构件的位置和布局,可以通过setGeometry来设置绝对坐标,但其存在很大的缺陷,因为当调整窗口大小时,构件不会做相应地调整来适应窗口。

  排列构件的首先方法是使用QLayout类和Box构件,在你给出构件的边距值和构件间的间距值后,他们会根据情况自动调整大小。QLayout类和Box构件之间的主要不同是:布局对象不是构件。布局类派生自QObject而不是QWidget,因此你在使用它时受到一些限制。与布局类相反,Box构件派生自QWidget,因此你可以把他们看作为普通的构件。

  QLayout的自雷QVBoxLayout和QHBoxLayout是创建界面最常用到的方法,QVBoxLayout和AHBoxLayout都是不可见的容器对象,他们分别以垂直和水平方向包含其他构件和布局。

  下面3个QVBoxLayout构造函数(QHBoxLayout有相似的API)

QVBoxLayout::QVBoxLayout(QWidget *parent,int margin, int spacing, const char *name);
QVBoxLayout::QVBoxLayout(QLayout *parentLayout, int spacing, const char *name);
QVBoxLayout::QVBoxLayout(int spacing, const char *name);

  QLayout的parent参数可以是一个构件或是另一个QLayout,如果没有制定parent,那么你以后只能通过addLayout方法把这个布局加到另一个QLayout中去。margin和spacing设置围绕在QLayout四周的编剧和构建见得间隔的像素值。

  一旦构建QLayout对象,可以用下面两种方法分别添加子构件和布局。

QBoxLayout::addWidget(QWidget *widget,int stretch = 0,int alignment = 0);
QBoxLayout::addLayout(QLayout *layout,int stretch = 0);

 

以上是关于Qt布局的主要内容,如果未能解决你的问题,请参考以下文章

26.Qt Quick QML-RotationAnimationPathAnimationSmoothedAnimationBehaviorPauseAnimationSequential(代码片段

Wordpress - 将代码片段包含到布局的选定部分的插件

有没有更聪明的方法将布局绑定到片段?

android片段表格布局

重新创建片段布局

片段布局不覆盖整个屏幕