我正在实现一个标签式UI。标签由QListWidget显示,内容由QStackedWidget显示。在QStackWidget的每个页面上都有布局,允许在QHBoxlayout中插入面板(小部件)。在每个面板上,有几个图标再次出现在QHBoxLayout中。以下是我想要实施的理想情况。
但是在QStackWidget的其他页面上,情况并非如此(图标较少),如下所示
我想删除额外的空间(或将图标左对齐以消除面板上图标之间的额外空间)
我试过间隔,然后发生了这种情况:(
请帮我纠正这件事。我的间隔码是
inline QSpacerItem * buildSpacer(Qt::Orientation orientation)
{
QSpacerItem * pSpacer = nullptr;
if (orientation == Qt::Horizontal)
{
pSpacer = new QSpacerItem(1000, UNIT_VALUE, QSizePolicy::Expanding, QSizePolicy::Minimum);
}
else
{
pSpacer = new QSpacerItem(UNIT_VALUE, 1000, QSizePolicy::Minimum, QSizePolicy::Expanding);
}
return pSpacer;
}
注意 我不想使用QTabWidget。顺便说一句,这个问题也适用于QTabWidget
答案 0 :(得分:1)
为什么不首先使用QTabWidget?
无论如何,您应该使用addStretch()而不是自己创建QSpacerItem:
my_layout->addWidget(new Widget("widget1"));
my_layout->addWidget(new Widget("widget2"));
my_layout->addStretch(1); // will "eat" extra space