zoukankan      html  css  js  c++  java
  • 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 ();
         }

    }

  • 相关阅读:
    bzoj-2748 2748: [HAOI2012]音量调节(dp)
    bzoj-2338 2338: [HNOI2011]数矩形(计算几何)
    bzoj-3444 3444: 最后的晚餐(组合数学)
    codeforces 709E E. Centroids(树形dp)
    codeforces 709D D. Recover the String(构造)
    codeforces 709C C. Letters Cyclic Shift(贪心)
    codeforces 709B B. Checkpoints(水题)
    codeforces 709A A. Juicer(水题)
    Repeat Number
    hdu 1003 Max Sum (动态规划)
  • 原文地址:https://www.cnblogs.com/wiessharling/p/3750461.html
Copyright © 2011-2022 走看看