• 885阅读
  • 1回复

QMdiArea添加的子窗口不在QMdiArea的容器里,没找到具体原因 [复制链接]

上一主题 下一主题
离线xiaodemo
 

只看楼主 倒序阅读 楼主  发表于: 2022-06-17
代码大概如下:

class MdiSubWin :public QMdiSubWindow, public Lei2
{
    ...
};

class DefWin:public QWidget
{
.....
    DefWin()
    {    
        QMdiArea *mdiArea = new QMdiArea;
        MdiSubWin* subDef = new MdiSubWin;
        QMdiSubWindow * sub = dynamic_cast<QMdiSubWindow *>(subDef);
        sub->setAttribute(Qt::WA_DeleteOnClose);
        mdiArea->addSubWindow(sub);
        sub->show();
        
        QVBoxLayout *vlay = new QVBoxLayout;
        vlay->addWidget(mdiArea);
        setLayout(vlay);
    }
};

说明:Lei2是一个抽象基类,调试时返回的sub 和添加的subDef 的地址值是一样的;但是sub 就是没在QMdiArea的容器里,找了好久的原因,都没找到。请问各位大神,有没有知道这个原因的。领说明下MdiSubWin 类里有一个QLabel,没有布局,直接是QLabel *label = new QLabel(this),此处的this代指MdiSubWin 类。其它主要内容和上面的代码差不多。
离线介农酥

只看该作者 1楼 发表于: 2022-06-25
QMdiSubWindow * sub = dynamic_cast<QMdiSubWindow *>(subDef);

subDef是子类,可以直接赋给sub,不用强制转换
快速回复
限100 字节
 
上一个 下一个