Qt 将QStackedWidget调整为打开的页面大小
我想将我的Qt 将QStackedWidget调整为打开的页面大小,qt,size,qwidget,qstackedwidget,Qt,Size,Qwidget,Qstackedwidget,我想将我的QStackedWidget调整到打开的页面 我在第一个页面上附加了很多小部件,但其余页面只有一个按钮。所以他们保持这么大,第一页就可以了 如何使我的QStackedWidget具有所查看页面的大小 我之所以想这样做,是因为我有三种不同的选择,之后我还有其他选择。如果我切换到有一个按钮,然后有很多空白的模式,我不明白为什么它不调整大小。你可以用一个按钮将页面包装到垂直布局的QFrame中,并在底部添加间隔符。你可以使用这个 在我的实践中,我记得我使用重新定义的addWidget方法从Q
QStackedWidget
调整到打开的页面
我在第一个页面上附加了很多小部件,但其余页面只有一个按钮。所以他们保持这么大,第一页就可以了
如何使我的QStackedWidget
具有所查看页面的大小
我之所以想这样做,是因为我有三种不同的选择,之后我还有其他选择。如果我切换到有一个按钮,然后有很多空白的模式,我不明白为什么它不调整大小。你可以用一个按钮将页面包装到垂直布局的QFrame中,并在底部添加间隔符。你可以使用这个 在我的实践中,我记得我使用重新定义的addWidget方法从QStackedWidget派生了一个类。在这个方法中,我接下来做了:
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();
}
//仅将堆叠的小部件大小设置为当前页面
对于(inti=0;istackedWidget->count();+i)
{
//确定垂直大小策略
QSizePolicy::Policy Policy=QSizePolicy::忽略;
如果(i==MUUI->stackedWidget->currentIndex())
policy=QSizePolicy::正在扩展;
//更新大小策略
QWidget*pPage=m_ui->stackedWidget->widget(i);
pPage->setSizePolicy(策略,策略);
}
谢谢!你每次都这么做?就在你创建它的时候?我不明白!对不起,你什么时候做这个?。我创建所有小部件,我添加它们。。。但是我不知道你可以为每个页面设置一个策略。设置扩展到页面是不起作用的…每当当前页面更改时,你需要在QStackedWidget本身上有一个好的大小策略,而且在更改页面小部件的大小策略之后,我似乎也需要在QStackedWidget上调用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);
}