Qt 使用嵌入式QWinWidget调整Mfc对话框的大小

Qt 使用嵌入式QWinWidget调整Mfc对话框的大小,qt,qt-mfc-migration,Qt,Qt Mfc Migration,我在qt中心论坛上问了我的问题,但还没有答案。 希望有人知道这件事 我有一个Mfc对话框,里面有QWinWidget。 当我调整对话框大小时,我希望我的QWinWidget自动 也可以调整大小和重新定位。这是在mfc对话框中创建QWinWidget的代码: int MyCDialog::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CDialog::OnCreate( lpCreateStruct ) == -1 ) r

我在qt中心论坛上问了我的问题,但还没有答案。
希望有人知道这件事

我有一个Mfc对话框,里面有QWinWidget。 当我调整对话框大小时,我希望我的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调用框架对象的resize方法,我希望在调整框架大小后,框架应该根据其大小提示和大小策略调整其子部件的大小并重新定位。但这并没有发生,至少不会像它应该发生的那样。我做错了什么?

框架在布局中确实有子元素,对吗?还有Qt事件循环在运行吗?@Eugene:我认为缺少一个事件循环就可以做到这一点,但我无法想象如果没有事件循环,绘图会工作得很好,所以我认为如果这是一个问题,我们会看到一个不同的问题。事实上,我使用的是Qt mfc迁移解决方案,这将mfc应用程序的循环与qt消息循环合并。是的,框架在布局中有它的子部件。我想我解决了这个问题。问题是我没有为QWinWidget设置Layout,尽管我不明白为什么这是一个问题。