Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 将QStackedWidget调整为打开的页面大小_Qt_Size_Qwidget_Qstackedwidget - Fatal编程技术网

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);
}