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);

 

posted @ 2016-05-22 00:34  pingfandfy  阅读(263)  评论(0编辑  收藏  举报