欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Qt图形视图框架:QGraphicsLinearLayout

程序员文章站 2024-03-26 10:06:35
...

一、描述

图形视图框架线性布局。

一般用法:

 QGraphicsScene scene;
 QGraphicsWidget *textEdit = scene.addWidget(new QTextEdit);
 QGraphicsWidget *pushButton = scene.addWidget(new QPushButton);

 QGraphicsLinearLayout *layout = new QGraphicsLinearLayout;
 layout->addItem(textEdit);
 layout->addItem(pushButton);

 QGraphicsWidget *form = new QGraphicsWidget;
 form->setLayout(layout);
 scene.addItem(form);

您可以将小部件、布局、拉伸(addStretch()、insertStretch() 或 setStretchFactor())和间距 (setItemSpacing()) 添加到线性布局。布局拥有项目的所有权。

1.1、尺寸提示和尺寸策略

QGraphicsLinearLayout “尊重”每个项目的大小提示和大小策略,并且当布局中的空间 > 项目可以填充的空间时,每个项目将根据该项目的布局对齐方式排列。 

1.2、间距

在项目之间,布局分配了一些空间。常用的间距是4。也可以调用setSpacing()设置间距。 

1.3、拉伸因子

可以为每个项目分配一个拉伸因子,以控制与其他项目相比它将获得多少空间。 默认情况下,以线性布局排列的两个相同小部件将具有相同的大小,但如果第一个小部件的拉伸因子为 1,第二个小部件的拉伸因子为 2,则第一个小部件将获得可用空间的 1/3 空间,第二个将获得 2/3。

二、成员函数

1、void insertItem(int index, QGraphicsLayoutItem *item)

将项目插入布局中的索引处。

2、void addItem(QGraphicsLayoutItem *item)

相对于调用insertItem(-1, item)。

3、void insertStretch(int index, int stretch = 1)

在索引处插入一段拉伸。

4、void addStretch(int stretch = 1)

 相对于调用insertStretch(-1, stretch)。

5、void setAlignment(QGraphicsLayoutItem *item, Qt::Alignment alignment) 

设置项目在布局中的对齐方式。

6、void setItemSpacing(int index, qreal spacing)

将索引处项目后的间距设置为spacing。

7、void setSpacing(qreal spacing) 

将布局的间距设置为间距。间距是指项目之间的垂直和水平距离。

8、void setStretchFactor(QGraphicsLayoutItem *item, int stretch)

设置要拉伸的项目的拉伸系数。将拉伸设置为 0 会从项目中删除拉伸因子。