0

ウィンドウにポインタとして QVBoxLayout があり、ウィジェットを動的に追加したいと考えています (ユーザーがボタンを押すと、ウィジェットが VBoxLayout に追加されます)。VBoxLayout は、ScrollArea の Layout として設定されます。しかし、ウィジェットを VBoxLayout に追加すると、VBoxLayout のサイズは変わらず、すべてがくしゃくしゃになります。

  m_ControlsLayout = new QVBoxLayout; //A member variable to add things later
  {
    QPushButton *PushButton = new QPushButton(tr("Add a new control"));
    connect(PushButton, SIGNAL(clicked()), this, SLOT(addControl())); //Adds it
    m_ControlsLayout->addWidget(PushButton, 1);
  }
  for(int i=0;i<10;i++)  //I am adding 10 useless Widgets to fill the space
    addControl();

  QScrollArea *ScrollArea = new QScrollArea;
  connect(this)
  ScrollArea->setWidget(Layout2Widget(m_ControlsLayout));

addControl() スロットはウィジェットを追加するだけです:

  m_ControlsLayout->addWidget(new ControlWidget);

高さを更新する必要があることを QScrollArea に伝える必要があると思います。

4

1 に答える 1

0

スクロール領域を使用してカスタム ウィジェット「ControlWidget」のコンテンツを表示する場合、子ウィジェットのサイズ ヒントが適切な値に設定されていることを確認することが重要です。カスタム ウィジェット クラスに仮想関数「QSize QWidget::sizeHint ()」を再実装します。

于 2013-08-20T07:31:04.117 に答える