使用QSpacerItem可以对ui中进行更好的布局,但是使用中有一些需要注意,如下
#include "DrawerWidget.h"
#include "ui_DrawerWidget.h"
#include "DrawerWidgetItem.h"
DrawerWidget::DrawerWidget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::DrawerWidget)
{
ui->setupUi(this);
/** 重点 */
// ui->verticalSpacer->changeSize(20, 1080, QSizePolicy::Minimum, QSizePolicy::Expanding);
for(int i=0;i<3;i++)
{
DrawerWidgetItem* item = new DrawerWidgetItem(this);
ui->verticalLayout_2->addWidget(item,Qt::AlignTop);
QObject::connect(item,SIGNAL(signlResize()),this,SLOT(signlResize()));
}
}
DrawerWidget::~DrawerWidget()
{
delete ui;
}
void DrawerWidget::signlResize()
{
QList<DrawerWidgetItem*> item_list = this->findChildren<DrawerWidgetItem*>("visible");
DrawerWidgetItem* item;
foreach(item,item_list)
{
if(item!=sender())
{
item->slotClicked();
}
}
}
窗口在空白区域的高度小于UI中设置的QSpacerItem的高度时,展示效果是没有问题的,但是全屏之后空白区域超过了UI中设置高度,效果就有问题了
所以在构造函数中,我重新设置了QSpacerItem的高度
ui->verticalSpacer->changeSize(20, 1080, QSizePolicy::Minimum, QSizePolicy::Expanding);
效果如下