查看完整版本: [-- QMdiArea添加的子窗口不在QMdiArea的容器里,没找到具体原因 --]

QTCN开发网 -> Qt基础编程 -> QMdiArea添加的子窗口不在QMdiArea的容器里,没找到具体原因 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

xiaodemo 2022-06-17 22:49

QMdiArea添加的子窗口不在QMdiArea的容器里,没找到具体原因

代码大概如下:

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 类。其它主要内容和上面的代码差不多。

介农酥 2022-06-25 14:49
QMdiSubWindow * sub = dynamic_cast<QMdiSubWindow *>(subDef);

subDef是子类,可以直接赋给sub,不用强制转换


查看完整版本: [-- QMdiArea添加的子窗口不在QMdiArea的容器里,没找到具体原因 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled