日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

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

發布時間:2024/9/21 c/c++ 72 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 ();
???? }

}

總結

以上是生活随笔為你收集整理的QT中关于窗口全屏显示与退出全屏的实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。