1

QMdiAreaだから私のコードの非バージョン、

MyWidget::MyWidget(QWidget* parent)
{
   ...
   layout()->setSizeConstraint( QLayout::SetFixedSize );
}

MainWindow::MainWindow(...)
{
   ...
   MyWidget* wgt = new MyWidget(NULL);
   wgt->show();
}

うまく機能し、ユーザーがサイズを変更できないウィジェットを生成します。しかし、MainWindowコードを次のように置き換えると

MainWindow::MainWindow(...)
{
   ...
   MyWidget* wgt = new MyWidget(ui->mdiArea); //Or MyWidget(NULL), same result
   ui->mdiArea->addSubWindow(wgt);
}

内にあるウィンドウQMdiAreaはサイズ変更可能です。Qt::WindowFlags の問題ではないようです。サイズ変更ポリシーを処理しません。確かにこれを行う方法はありますか?NBsetFixedSize(ht, wd)ウィジェットのサイズはプログラムで変更できるため、次のようなものは使用できません(サブウィジェットが追加および削除されます)。ただし、ユーザーはサイズを変更できないはずです。

4

2 に答える 2

1

サイズ変更はできませMyWidgetんが、呼び出すと:

ui->mdiArea->addSubWindow(wgt);

ウィジェットは、サイズ変更可能な に配置さQMdiSubWindowます。作成したウィンドウを取得して、そのサイズを修正するだけです。

QMdiSubWindow* subWindow = ui->mdiArea->addSubWindow(wgt);
subWindow->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);

これは機能するはずですが、このコードを自分で試したことはありません。

編集:まあ...どうやらそれはサイズを修正しません。:(

于 2012-01-14T02:18:00.263 に答える
0

以下は私のために働いた:

    MyWidget* wgt = new MyWidget(ui->mdiArea); 
    QMdiSubWindow* subWindow = ui->mdiArea->addSubWindow(wgt); 
    subWindow->setFixedSize(wgt->size());
    wgt->show();
于 2012-02-11T14:26:50.683 に答える