首页 > 其他分享 >Qt全屏显示和按键ESC退出全屏

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

时间:2024-10-12 16:11:49浏览次数:7  
标签:FullScreen Qt parentwidget pEvent ESC 全屏 QWidget include

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);
}

 

标签:FullScreen,Qt,parentwidget,pEvent,ESC,全屏,QWidget,include
From: https://www.cnblogs.com/bclshuai/p/18460744

相关文章

  • qt5widgets.dll丢失导致腾讯课堂无法打开难题:qt5widgets.dll文件缺失快速解决策略
    面对qt5widgets.dll文件丢失导致腾讯课堂无法打开的难题,以下提供一套快速解决策略,帮助您迅速恢复腾讯课堂的正常使用。一、了解qt5widgets.dll文件的重要性qt5widgets.dll是Qt5框架中的一个动态链接库文件,它提供了丰富的用户界面元素和功能,是许多基于Qt5开发的应用程序所必......
  • 【解决方案】Sublime Text 4 按下 Esc 键后无法输入任何内容
    在最后编辑博客内容时,我的Sublime版本为4180。我基本用SublimeText4替代了系统自带的Notepad,我用它编辑任何东西(除了代码,手动狗头)。开始我怀疑是PackageControl安装了过多依赖导致的兼容性问题,但由于Sublime多次更新,我的PackageControl再次从命令面板消失,而它......
  • PyQt5/6 PySide2/6 在任务栏托盘区域编程,用于显示文字(图片)信息
    PyQt5/6PySide2/6在任务栏编程,用于显示文字(图片)信息本文使用PyQt5演示,其他库如PySide2/6,稍微改改就能用,因为其核心使用的是Win32gui来获取一些系统信息代码结构本文中全部代码全在test_taskbar.py这一个文件中编码,步骤中有变动的地方会注释标注,无改动的不会重复显示出来,需要......
  • Qt,提升QLabel
     QLabel不能满足我的需求,需要提升QLabel为自己封装的类 在UI中,拉一个QLabel出来,鼠标右键点击QLabel,选择【提升为】,然后填写自己的类。 需要注意的是,提升后QLabel需要show一下,不然显示不出来 #ifndefMYVIDEO_H#defineMYVIDEO_H#include<QLabel>#include<QWidge......
  • Qt监听Windows锁屏、解锁、休眠、唤醒、登录、注销消息
    环境:Windows11笔记本,其它环境未测试根据其它博客的直接在窗口nativeEvent中监听WM_WTSSESSION_CHANGE会话消息和WM_POWERBROADCAST电源消息发现不起作用,查阅尝试后找到可行方法如下:会话事件和电源消息都需要先用WindowsAPI注册窗口句柄voidMainWindow::registerSys......
  • Qt初识_通过代码创建hello world
    个人主页:C++忠实粉丝欢迎点赞......
  • 最新Qt6将可执行文件打包为独立exe保姆级教学!含报错:无法定位程序输入点于动态链接库解
     相信大家都有类似的体验,自己已经在Qt练习中写出了不错的小程序,每次想发给别人体验都要发一整个大代码包,还得对面有对应的装好的QT才能运行,或者是想把自己的成果记录下来作为一个单独的exe文件却没有办法,今天教大家Qt如何生成独立可执行exe。注意:以下是Qt6之前版本可用的全过......
  • Linux下以编译源码的方式安装Qt5与Qt6及其使用
    文章目录概要资源下载依赖安装编译Qt5Qt6遇到的问题qtchooser使用概要自Qt5.15开始,不再提供opensourceofflineinstallers,也就是原来的.run的安装文件,只能通过源码编译来安装了参考文章资源下载源码网址,链接为Qt的资源,根据自己选择下载例如#下载源码......
  • 【Qt】详细Qt基础 (包括自定义控件)
    目录QT概述创建项目项目文件(.pro)main.cppmainwindow.uimainwindow.hmainwindow.cpp窗口类QWidget窗口显示QDialog窗口QPushButton创建显示对象树基本概念功能坐标体系控件ItemWidgetsQListWidgetQTreeWidgetQTableWidget自定义控件QT概述模块功能QtCore......
  • QT定时器+事件捕获
    QT定时器类定时器类的使用主要包括定时和启动两个步骤。要使用OTimer类,需要引用头文件:#include<QTimer>QTimer类常用的成员函数有(1)voidstart(std::chrono::milisecondsmsec):启动定时器,参数为定时时间(单位为毫秒),如:        QTimermyTimer;        ......