Qt センター フォーラムで質問しましたが、まだ回答がありません。
誰かがこれについて何か知っていることを願っています。
QWinWidget を含む Mfc ダイアログがあります。ダイアログのサイズを変更すると、QWinWidget のサイズも自動的に変更され、位置も変更されます。これは、mfc ダイアログ内で QWinWidget を作成するコードです。
int MyCDialog::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate( lpCreateStruct ) == -1 )
return -1;
win=new QWinWidget( this->m_hWnd );
MyFrame * dialog=new MyFrame(win);
win->move(0,0);
win->show();
return 0;
}
MyFrame は QFrame オブジェクトから派生しています。QFrame オブジェクトは Qt デザイナーで作成されます。QFrame にはレイアウトが割り当てられており、QFrame 子ウィジェットの幾何学的管理を行うことを想定しています。
ダイアログのサイズ変更境界線をドラッグすると実行されるコードは次のとおりです。
void MyCDailog::OnSize(UINT nType,int cx,int cy)
{
QObjectList list=win->children();
QFrame* p=(QFrame*) list.at(0);
p->resize(QSize(cx,cy));
}
ダイアログのサイズが変更されたときに、フレーム オブジェクトのサイズ変更メソッドを OnSize から呼び出しています。フレームのサイズを変更した後、サイズのヒントとサイズ ポリシーに従って、子ウィジェットのサイズと位置を変更する必要があると予想していました。しかし、これは起こっていません。少なくとも、そうあるべきではありません。私が間違っていることは何ですか?