8

QStackedWidget開いているページにサイズ変更したい。

最初のページにたくさんのウィジェットを添付しましたが、残りのページにはボタンが1つしかありません。だから彼らはとても大きいままで、最初のページは大丈夫です。

QStackedWidget表示されているページのサイズを設定するにはどうすればよいですか。

私がこれをやりたい理由は、私には3つの異なる選択肢があり、その後は他の選択肢があるからです。ボタンがあり、その後空白が多いモードに変更すると、サイズが変更されない理由がわかりません。

4

3 に答える 3

9

このサイズ変更可能なStackedWidgetを使用できます

私の練習では、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();
}
于 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

1つのボタンでページを垂直レイアウトのQFrameに折り返し、下部にスペーサーを追加できます。

于 2013-01-23T13:44:21.907 に答える