我希望我QStackedWidget
调整到打开的页面。
我在第一页上附加了很多小部件,但其余页面只有一个按钮。所以他们保持这么大,第一页还可以。
我怎样才能让我QStackedWidget
拥有正在查看的页面的大小。
我想这样做的原因是我有三个不同的选择,然后我还有其他的东西。如果我更改为有按钮的模式,然后有很多空白,我看不出它为什么不调整大小。
我希望我QStackedWidget
调整到打开的页面。
我在第一页上附加了很多小部件,但其余页面只有一个按钮。所以他们保持这么大,第一页还可以。
我怎样才能让我QStackedWidget
拥有正在查看的页面的大小。
我想这样做的原因是我有三个不同的选择,然后我还有其他的东西。如果我更改为有按钮的模式,然后有很多空白,我看不出它为什么不调整大小。
你可以使用这个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();
}
// 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);
}
您可以将带有单个按钮的页面包装到具有垂直布局的 QFrame 中,并在底部添加间隔。