Qt窗口全屏或控件全屏

来源,常见的视频播放器画面窗口在还是整体的一部分,当双击时会全屏播放,这里解决全屏显示的问题,关于捕获鼠标时间见博文
事件过滤器
鼠标事件

使用方法

QT中窗口部件QWidget成员函数showFullScreen(); 是用于将窗口部件全屏显示,但是它只对窗口模式的部件有用。子窗口的特征是Qt::SubWindow,不是独立的窗口。因此对其调用showFullScreen()无效。

子窗口全屏方法

通过对对子窗口调用:setWindowFlags(Qt::Dialog);setWindowFlags(Qt::Window);将其设为窗口模式后,即可调用showFullScreen();进行全屏显示了。注意顺序不能颠倒。因为showFullScreen()函数只对顶级窗口有效。

全屏后如何退出

  1. 先调用setWindowFlags(Qt::Dialog);或者setWindowFlags(Qt::SubWindow);在调用move和resize函数。
  2. 调用showNormal(),再调setWindowFlags(Qt::SubWindow)。注意函数的调用顺序不能颠倒,否者不会还原。原因很简单,因为showNormal()也只对顶级窗口有效。所以必须将它设为非顶级窗口再调用。

MFC中,子窗口退出全屏的方法简单直接,直接调用SetWindowPos()函数将子窗口显示到预定的位置即可。
QT中,直接使用move和resize对窗口定位是没有效果的。需要先将子窗口设位非窗口模式。之后再将窗口移到理想位置。

退出全屏时,调用showNormal(),再调setWindowFlags(Qt::SubWindow)。
这有两个问题:1)showNormal()也是只对顶级窗口有效。2)可以考虑先调用showNormal()将窗口设为原来大小,在将窗口设为子窗口模式。但这样窗口回到父窗口之中也不会显示原来的大小。

关于窗口的函数

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

示例

  • 示例一

全屏显示:

       VideoWidget->setWindowFlags (Qt::Window);
       VideoWidget->showFullScreen ();

退出全屏时:

    VideoWidget->setWindowFlags (Qt::SubWindow);
       VideoWidget->showNormal ();
  • 示例二
//播放窗口全屏
bool HIK_Record::frameFullScreen()
{
    //判断窗口当前状态,在选择是全屏还是退出全屏
    if(ui->frame->isFullScreen()){  
        ui->frame->setWindowFlags(Qt::SubWindow);
        ui->frame->showNormal();
    }else{
        ui->frame->setWindowFlags(Qt::Window);
        ui->frame->showFullScreen();
    }
    return true;
}

链接

事件过滤器
http://blog.csdn.net/jh1513/article/details/53311084
鼠标时间的捕获
http://blog.csdn.net/jh1513/article/details/53311122

  • 3
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值