使用QStackedWidget QLayout问题

时间:2016-09-06 09:56:24

标签: c++ qt layout

我正在实现一个标签式UI。标签由QListWidget显示,内容由QStackedWidget显示。在QStackWidget的每个页面上都有布局,允许在QHBoxlayout中插入面板(小部件)。在每个面板上,有几个图标再次出现在QHBoxLayout中。以下是我想要实施的理想情况。

enter image description here

但是在QStackWidget的其他页面上,情况并非如此(图标较少),如下所示

enter image description here

我想删除额外的空间(或将图标左对齐以消除面板上图标之间的额外空间)

我试过间隔,然后发生了这种情况:(

enter image description here

请帮我纠正这件事。我的间隔码是

 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

1 个答案:

答案 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