QT中关于窗口全屏显示与退出全屏的实现

近期在学习QT时遇到了很多问题这也是其中一个,个人通过在各种书籍和网络上的查阅找到了一些关于这方面的答案,希望能给大家一些帮助。

首先,在QT中对于窗口显示常用的有这么几个方法可以调用:

Qt全屏显示函数            showFullScreen()

Qt最大化显示函数        
showMaximized()
Qt最小化显示函数        
showMinimized()
Qt固定尺寸显示函数      resize(x,y)
Qt设置最大尺寸函数      setMaximumSize(w,h)
Qt设置最小尺寸函数      
setMinimumSize(w,h)

但是 showFullScreen()只对顶级窗口有效果,对子窗口无效;
setWindowFlags (Qt::Window |
Qt::FramelessWindowHint);第一个参数表示此控件是窗口类型,第二个表示去除边框,状态栏,没有框架。其实与showFullScreen()
函数的原理差不多。


其次要将子窗口全屏显示可用以下方法:
        将要全屏的Qt主窗口中的子窗口调用函数setWindowFlags(Qt::Dialog),或者调用setWindowFlags(Qt::Window)将其类型提升为顶级窗口模式,然后调用showFullScreen()函数将子窗口全屏显示。也就是先将子窗口全屏显示前设置为顶级窗口,然后进行全屏显示,注意顺序不能颠倒。因为showFullScreen()函数只对顶级窗口有效。
        当然全屏后还要恢复正常,即调用setWindowFlags(Qt::subwindow),或者setWindowFlags(Qt::Dialog),将子窗口设置为非顶级窗口,再调用showNormal()还原子窗口显示。直接调用mywindow.resize(x,y)是没有效果的。注意函数的调用顺序不能颠倒,否者不会还原。原因很简单,因为showNormal()也只对顶级窗口有效。所以必须将它设为非顶级窗口再调用。
        你如果需要知道屏幕的高宽可以调用以下函数:
          QApplication::desktop ()->height();
        QApplication::desktop
()->width();
例如:
      
全屏显示:
      
VideoWidget->setWindowFlags (Qt::Window);
      
VideoWidget->showFullScreen ();
      
退出全屏时:
    VideoWidget->setWindowFlags
(Qt::SubWindow);
      
VideoWidget->showNormal ();
      退出全屏时你可以有鼠标右键单击屏幕弹出菜单获得,也可以捕获键盘事件获得如:
      keyPressEvent(QKeyEvent
*keyset)
    
{
      if(keyset->key()==Qt::Key_Escape){
          
VideoWidget->setWindowFlags
(Qt::SubWindow);
          
VideoWidget->showNormal ();
     }

}

时间: 2024-10-18 14:08:20

QT中关于窗口全屏显示与退出全屏的实现的相关文章

Qt中子窗口全屏显示与退出全屏

在Qt开发中偶尔遇到子窗口全屏显示和退出全屏的功能需求,是一种比较正常的情况,首先,我们需要知道子窗口全屏显示与退出全屏主要会调用的方法有哪些,下面将列举此过程主要调用的方法: isFullScreen():判断窗口当前是处于全屏状态还是非全屏状态 setWindowFlags(Qt::WindowFlags type):设置窗口属性 showFullScreen():设置窗口全屏显示 showNormal():设置窗口恢复原来显示(Restores the widget after it ha

js控制页面的全屏展示和退出全屏显示

<!DOCTYPE html> <html> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <body > <button id="btn" >js控制页面的全屏展示和退出全屏显示</button> <div id="content" style="

手机影音第九天,控制视频全屏播放与退出全屏播放,音量调节按钮来控制视频音量与静音的实现

代码以托管到码云,有兴趣的小伙伴可以下载看看 https://git.oschina.net/joy_yuan/MobilePlayer 一.视频全屏播放与退出全屏 系统默认的videoview类,没有调整大小的方法,因此需要自定义一个类,继承videoview,然后重写里面的三个构造方法,再自定义一个调整视频播放页面大小的方法. 1.布局文件 同时,在视频播放的布局文件中,videoview布局要引用上面自定义的类. <?xml version="1.0" encoding=&

iOS 多个播放器同时播放,双击全屏,单击退出全屏

前言:公司需求如下:点击一个按钮播放一个视频,最多同时播放4个:双击某视频让其全屏,单击再恢复原来的样子.IOS的播放器有两种,MPMoviePlayerController,AVAudioPlayer.首先我尝试的是前者,发现并不能让两个视频同时播放,当播放第二个视频的时候,第一个就自动停止了:后来又找了些资料试了试后者,完美解决了这个问题. 多个播放器同时播放,资料参考自:http://ios.jobbole.com/84287/ ,这里介绍的挺详细的,文章后面还有项目可以下载演示,这里就不

QT中异形窗口的绘制(winEvent处理WM_NCHITTEST消息)

这里讨论的只是Windows平台上的实现. 在QT中绘制异形窗口,只要设定 windowFlag 为 CustomizeWindowHint,再结合setMask()就可以做出各种奇形怪状的窗口.相对来说比较麻烦的, 是进行窗口拖动和缩放的处理. 在 Windows SDK 和 MFC 中比较容易,只要处理 WM_NCHITTEST,返回相应的测试值就可以了.幸运的是,QT中也提供了直接处理各平台消息的方法,在 Windows下只需要重载winEvent方法. 下面给出了示例代码: // inc

Qt中切换窗口功能的实现

两条语句就能够实现了: 1 this->newNC.setWindowFlags(Qt::WindowStaysOnTopHint); 2 this->newNC.show(); mark一下,防止以后忘了

MFC对话框最大化、最小化、全屏显示、可拉伸、(控件大小动态化)、滚动条

1.点击对话框,在属性里:border改为resizing,可拉伸 Maximize Box 改为True Minimize Box 改为True Vertical Scrollbar改为 true,显示滚动条 titlebar改为false,题目消失 2.对话框全屏显示: OnInitDialog()中,也就是初始显示状态是全屏 int   cx,cy; cx   =   GetSystemMetrics(SM_CXSCREEN); cy   =   GetSystemMetrics(SM_C

关于全屏显示问题处理

window.isflsgrn=false;//IE11以下是否进入全屏标志,True为全屏状态,false为非全屏状态 window.ieIsfSceen=false;//IE11是否进入全屏标志,true为全屏状态,false为非全屏状态 //跨浏览器返回当前 document是否进入了可以请求全屏模式的状态 function fullscreenEnable(){ var isFullscreen=document.fullscreenEnabled||window.fullScreen|

JavaScript实现全屏显示

<!doctype html> <html> <head> <title>全屏显示</title> <meta charset="utf-8" /> <style> div { width: 200px; height:200px; background:pink; margin:100px auto; } button { margin-left: 650px; } h1 { margin-left: