力为的技术博客

联系 聚合 管理
  154 Posts :: 1 Stories :: 561 Comments :: 0 Trackbacks
在QMainFrame中这样构造MDI窗口:
    auto pFrame = new QMdiArea(this);
    pFrame->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
    pFrame->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
    pFrame->setViewMode(QMdiArea::TabbedView);
    pFrame->setTabShape(QTabWidget::Triangular);
    pFrame->setTabsClosable(true);
    pFrame->setTabsMovable(true);

    QMdiArea* mdiArea = pFrame;
    AuWindow3d* pView = new AuWindow3d(mdiArea);
    auto pSubWin = mdiArea->addSubWindow(pView, Qt::SubWindow);
    pSubWin->setWindowTitle(tr("{3D}"));
    pSubWin->showMaximized();

    setCentralWidget(pFrame);

运行程序,窗口显示正常。

但在其他地方获取当前子窗口
    QMdiArea* mdiArea = dynamic_cast<QMdiArea*>(centralWidget());
    auto pSubWin = mdiArea->currentSubWindow();
    if (!pSubWin)
        return nullptr;

得到的pSubWin永远是null。

如果在添加MDI子窗口之前设置QMainWindow的centralWiget,就可以得到正确的结果。
posted on 2015-06-13 20:06 力为 阅读(6949) 评论(0)  编辑 收藏 引用 所属分类: 3. VC&MFC&Qt

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理