8

我希望我QStackedWidget调整到打开的页面。

我在第一页上附加了很多小部件,但其余页面只有一个按钮。所以他们保持这么大,第一页还可以。

我怎样才能让我QStackedWidget拥有正在查看的页面的大小。

我想这样做的原因是我有三个不同的选择,然后我还有其他的东西。如果我更改为有按钮的模式,然后有很多空白,我看不出它为什么不调整大小。

4

3 回答 3

9

你可以使用这个Resizable StackedWidget

在我的实践中,我记得我有从 QStackedWidget 派生的类,并重新定义了 addWidget 方法。在这种方法中,我接下来做了:

void ResizableStackedWidget::addWidget(QWidget* pWidget)
{
   pWidget->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
   QStackedWidget::addWidget(pWidget);
}

并使用此插槽连接到 currentChange(QWidget*) 信号:

void ResizableStackedWidget::onCurrentChanged(int index)
{
   QWidget* pWidget = widget(index);
   Q_ASSERT(pWidget);
   pWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
   pWidget->adjustSize();
   adjustSize();
}
于 2013-01-23T17:38:49.620 回答
5
// make the stacked widget size to the current page only
for (int i = 0; i < m_ui->stackedWidget->count (); ++i)
{
    // determine the vertical size policy
    QSizePolicy::Policy policy = QSizePolicy::Ignored;
    if (i == m_ui->stackedWidget->currentIndex ())
        policy = QSizePolicy::Expanding;

    // update the size policy
    QWidget* pPage = m_ui->stackedWidget->widget (i);
    pPage->setSizePolicy (policy, policy);
}
于 2013-01-23T18:12:55.043 回答
2

您可以将带有单个按钮的页面包装到具有垂直布局的 QFrame 中,并在底部添加间隔。

于 2013-01-23T13:44:21.907 回答