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

Qt图形视图框架:QGraphicsGridLayout

程序员文章站 2024-03-26 10:01:53
...

一、描述

图形视图框架网格布局。QGraphicsGridLayout 在添加项目时自动计算网格的尺寸。

    QGraphicsWidget *textEdit = gphs->addWidget(new QTextEdit);
    QGraphicsWidget *pushButton = gphs->addWidget(new QPushButton("确定"));

    QGraphicsGridLayout *layout = new QGraphicsGridLayout;
    layout->addItem(textEdit, 0, 0);
    layout->addItem(pushButton, 0, 1);

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

Qt图形视图框架:QGraphicsGridLayout

布局拥有项目的所有权。某些情况下,当布局项也继承自 QGraphicsItem(例如 QGraphicsWidget)时,所有权会产生歧义,因为布局项属于两个所有权层次结构。处理方式见:QGraphicsLayoutItem的第7个函数。

1.1、尺寸提示和尺寸策略

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

二、部分成员函数

1、void addItem(QGraphicsLayoutItem *item, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())

添加项目到网格,指定对齐方式。rowSpan和columnSpan为项目所占行列数。

2、void addItem(QGraphicsLayoutItem *item, int row, int column, Qt::Alignment alignment = Qt::Alignment())

添加项目,项目占1行1列。

Qt图形视图框架:QGraphicsGridLayout

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

获取/设置项目对齐方式。

4、void setColumnAlignment(int column, Qt::Alignment alignment) / Qt::Alignment columnAlignment(int column) 

设置/获取整列的对齐方式。也有设置/获取整行对齐方式的函数。

5、int columnCount()

返回网格布局中的列数(除了最后的列之外,中间空列也被计算在内)。rowCount()类似。

6、int count()

获取布局中的项目数。

7、void removeAt(int index) / void removeItem(QGraphicsLayoutItem *item)

删除布局项而不销毁它。项目的所有权转移给调用者。 

另有一些设置尺寸的函数,比较简单,根据名字可知用法,略过。