我希望我的QStackedWidget
調整到打開的頁面。將QStackedWidget調整到打開的頁面
我得到了很多小部件附加到第一頁,但其餘頁面只有一個按鈕。所以他們保持這麼大,第一頁是好的。
如何讓我的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();
}
你可以用單個按鈕將頁面換成垂直佈局的QFrame並在底部添加間隔。
// 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);
}
呀。作品。 :) – darkgaze