首页 > 解决方案 > 处理 MdiArea 中的窗口状态

问题描述

我在我的应用程序中使用了 MDI 中央小部件。目前我总是以最大化的方式打开一个孩子

child->showMaximized();

如果我使用级联或平铺工作区,这会导致问题。现在我试图找出子窗口是否最大化。如果不是,我想打开它们

child->showNormal();

但片段:

    foreach(QWidget* widget, mdiArea->subWindowList()) {
        if(widget->windowState()==Qt::WindowMaximized){
            qDebug("maximized");
        }else{
            qDebug("not maximized");
        }
    }

看起来这个子窗口将只有 WindowActive 和 WindowNoState。知道如何检查子窗口(子窗口)是否最大化?

最大化我谈论完整的mdiArea(工作区)

标签: qt

解决方案


windowState() 返回一组标志,例如 windowState() 可以指示窗口处于活动状态(Qt::WindowActive)和最大化(Qt::WindowMaximized),所以如果您想验证其中一个是否处于活动状态,您必须使用运算符“&”:

if(widget->windowState() & Qt::WindowMaximized)

推荐阅读