2012-01-13 5 views
1

だから私のコードの非QMdiAreaバージョン、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の問題ではないようですが、サイズ変更ポリシーは処理されません。確かにこれを行う方法がありますか?注意:ウィジェットのサイズはプログラムで変更できるので(サブウィジェットが追加されたり削除されたりするので)setFixedSize(ht, wd)のようなものは使用できません。しかし、ユーザーはサイズを変更できません。

ui->mdiArea->addSubWindow(wgt); 

ウィジェットはサイズ変更であるQMdiSubWindowに置かれている:あなたが呼び出すときMyWidgetは、サイズ変更ではありませんが

答えて

0

以下の私の仕事:

MyWidget* wgt = new MyWidget(ui->mdiArea); 
    QMdiSubWindow* subWindow = ui->mdiArea->addSubWindow(wgt); 
    subWindow->setFixedSize(wgt->size()); 
    wgt->show(); 
+0

さて、 'setFixedSize'(元の記事を参照)を使いたいと思っていましたが、私はこれを推測し、ウィジェットが追加または削除されるたびに再呼び出しすることが唯一の方法です。 –

1

。これは動作するはず

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

が、私はこのコードを自分で試したことがない:あなたがしなければならないのは、作成のウィンドウを取得し、そのサイズを固定しています。

編集:よく...明らかにそのはありませんサイズを修正します。 :(

+0

いやには、何も変更しませんでしたsetSizePolicy'はすでにQWidget' 'の方法ではなく、'ので、間違いなく、再び良い試みのように思えたけど。特に 'QMdiSubWindow'に特に注意してください。しかし、' addSubWindow'が 'QMdiSubWindow *'を返すことを指摘するために、私はそれを認識しませんでした:) –

+0

Damn。ウィジェットとサブウィンドウで 'sizeHint()'メソッドが返すものを確認できますか?特に 'return 'である' QSize'が有効な場合は特にそうです。 http://developer.qt.nokia.com/doc/qt-4.8/qsize.html#isV​​alid 無効なものがあれば、サイズポリシーの修正がうまくいかない理由を説明するかもしれません... –

関連する問題