QLayout的使用小结

个人随笔 (Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)


参考:http://doc.qt.io/qt-5/qlayout.html

参考:http://qimo601.iteye.com/blog/1413634

 

QLayout作为Qt的界面布局利器,使用起来确实非常的方便:

 

继承关系

QLayoutItem

         QLayout(还继承自QOBject)

                   QBoxLayout

                            QVBoxLayout

                            QHBoxLayout

                   QFormLayout

                   QGridLayout

                   QGraphicsLayout

                   QStackedLayout

         QSpacerItem

         QWidgetItem

         QObject

 

作为QLayout的父类,QLayoutItem提供了下列方法,包括绘制和范围的信息:

virtual QSize     sizeHint() const = 0

virtual QRect   geometry() const = 0

virtual void       invalidate()

virtual QLayout *     layout()

Qt::Alignment alignment() const

 

 

QLayout提供的信息就比较多了:提供了子页面、子Layout的添加接口,设置边界、菜单项等的接口

virtual void       addItem(QLayoutItem *item) = 0

void  addWidget(QWidget*w)

void  setContentsMargins(intleft, int top, int right, int bottom)

void  setMenuBar(QWidget*widget)

 

QBoxLayout作为QLayout的子类,提供了一些额外的信息:提供元素的拉伸比例,添加空元素等

void  addLayout(QLayout*layout, int stretch = 0)

void  addSpacerItem(QSpacerItem*spacerItem)

void  addSpacing(intsize)

bool setStretchFactor(QWidget*widget, int stretch)

bool setStretchFactor(QLayout*layout, int stretch)

 

界面的继承情况,在http://doc.qt.io/qt-5/qlayout.html有详细的介绍,不做额外的介绍。

使用的过程的例子介绍一些:

// 设置边界为0

QHBoxLayout *pLayout1 = new QHBoxLayout();

QHBoxLayout *pLayout2 = new QHBoxLayout();

pLayout1->setMargin(0);

pLayout2->setMargin(0);

 

// 设置拉伸比例2:3

pLayoutMain->addLayout(pLayout1);

pLayoutMain->addLayout(pLayout2);

pLayoutMain->setStretch(0, 2);

pLayoutMain->setStretch(1, 3);

 

// 底面边距设0

int left = 0, right = 0, top = 0, bottom = 0;

pMainLayout->getContentsMargins(&left, &top, &right, &bottom);

pMainLayout->setContentsMargins(left, right, top, 0);

 

// 添加填充弹簧条

pLayout1->addItem(new QSpacerItem(1, 1, QSizePolicy::Expanding, QSizePolicy::Minimum));

 

// 元素设置位置:左对齐,上下居中

pLabel->setAlignment(Qt::AlignLeft|Qt::AlignVCenter);

 

// 设置固定高度

pLabel->setFixedHeight(21);

 

// 设置固定宽度

pLabel->setFixedWidth(21);

 

 个人随笔 (Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)

 

你可能感兴趣的:(Qt)