QT中设置页面全屏模式

文章讲述了如何在Qt应用中通过设置和条件判断实现窗口(包括主窗口和对话框)的全屏、最大化、最小化和正常显示模式的切换。重点在于处理活动窗口和无活动窗口的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


  if (mainWindow)
  {
    app.setActivationWindow(mainWindow);
    PluginManager::removeObject(mainWindow);
    mainWindow->setWindowState(Qt::WindowFullScreen); // 设置窗口全屏
    app.installEventFilter(mainWindow);
  }
  return app.exec();

可以在main.cpp文件中设置mainwindow进行全屏运行


如果是希望在设置列表进行增加窗口模式和全屏模式的切换需要在setting页面进行设置,可以在Ui界面中创建一个checkbox的按钮进行窗口切换的绑定


    QMainWindow *mainWindow = qApp->activeWindow() ? qobject_cast<QMainWindow*>(qApp->activeWindow()) : nullptr;
    if (mainWindow) {
        if (pass) {
            mainWindow->setWindowState(Qt::WindowFullScreen);
        } else {
            mainWindow->setWindowState(Qt::WindowNoState);
        }
    
}

        使用qApp全局变量和activeWindow()函数获取当前应用程序的活动窗口的指针。如果活动窗口不为空,则尝试将其强制转换为QMainWindow对象,使用了qobject_cast模板函数。如果转换成功,则将指向QMainWindow的指针存储在mainWindow变量中,否则设置为nullptr。

        if语句检查pass变量是否为真或假。如果为真,则使用setWindowState()函数将mainWindow的窗口状态设置为全屏,使用了Qt::WindowFullScreen标志。如果pass为假,则将窗口状态设置为普通,使用了Qt::WindowNoState标志。

 但是当进入设置时如果是单独的对话框后qApp->activeWindow() 函数返回的是当前活动的窗口的指针,当前没有活动窗口,它将返回空指针。


void  {

    QList<QWidget*> allWidgets = qApp->allWidgets();
    for (QWidget *widget : allWidgets) {
        QMainWindow *mainWindow = qobject_cast<QMainWindow*>(widget);
        if (mainWindow) {
            if (pass && !mainWindow->pass()) {
                mainWindow->showFullScreen();
            }
            else if (!pass && mainWindow->pass()) {
                mainWindow->showNormal();
            }
        }
    }

    _settings->setValue("Environment/FullscreenModeEnabled", isFullscreen);

    bool pass = false;
    for (QWidget *widget : allWidgets) {
        QMainWindow *mainWindow = qobject_cast<QMainWindow*>(widget);
        if (mainWindow && mainWindow->isFullScreen()) {
            pass = true;
            break;
        }
    }
    pass->setChecked(pass);

}

 此代码在界面上切换全屏模式时,将会对应用程序中的所有窗口进行全屏切换。请注意,如果某个窗口不支持全屏模式,或者当前窗口已经是全屏模式,则这些操作将不会生效。

Qt全屏显示函数            showFullScreen() 
Qt最大化显示函数         showMaximized()
Qt最小化显示函数         showMinimized()
Qt窗口还原为正常状态      showNormal()

注:上述所有代码变量和函数均用pass代替

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值