Qt全屏显示和按键ESC退出全屏

1.需求描述

将播放窗口全屏显示,将工具栏边框等隐藏在后面;然后退出全屏通过ESC返回按钮;

2.实现方法

定义一个全屏的容器类,继承于QWidget;全屏时,去掉窗口的父窗口,然后全屏显示,不去掉父窗口指针无法全屏;按下ESC按钮后,通过keyPressEvent(QKeyEvent* pEvent);函数,将父窗口重新设置回去;

复制代码
#ifndef FULLSCREEN_H
#define FULLSCREEN_H

#include <QWidget>
#include <QKeyEvent>
class FullScreen : public QWidget
{
    Q_OBJECT

public:
    FullScreen(QWidget *parent);
    ~FullScreen();
    void SetFullScreen();
    void keyPressEvent(QKeyEvent* pEvent);
private:
    QWidget* parentwidget=NULL;
};

#endif // FULLSCREEN_H
复制代码
复制代码
#include "FullScreen.h"
#include <QLayout>
FullScreen::FullScreen(QWidget *parent)
    : QWidget(parent)
{

}

FullScreen::~FullScreen()
{

}

void FullScreen::SetFullScreen()
{
    parentwidget = parentWidget();
    parentWidget()->layout()->removeWidget(this);
    setParent(NULL);
    showFullScreen();
    raise();
}

void FullScreen::keyPressEvent(QKeyEvent* pEvent)
{
    if (!pEvent->modifiers())
    {
        if (pEvent->key() == Qt::Key_Escape &&isFullScreen())
        {
            hide();//避免一闪而过
            showNormal();
            setParent(parentwidget);
            parentwidget->layout()->addWidget(this);
            show();
            pEvent->accept();
            return;
        }
    }
    QWidget::keyPressEvent(pEvent);
}
复制代码

 

posted @   一字千金  阅读(250)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
历史上的今天:
2023-10-12 linux系统和windows系统检测磁盘大小报警
2021-10-12 centos防火墙操作firewalld and systemctl 打开linux端口的shell脚本
2021-10-12 Linux快速开发之makefile编译、以服务形式运行、抓包、调试、分析dump
2021-10-12 linux docker 操作命令
点击右上角即可分享
微信分享提示