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()也只對頂級窗口有效。所以必須將它設為非頂級窗口再調用。
        你如果需要知道屏幕的高寬可以調用以下函數:

1 QApplication::desktop ()->height(); 2 QApplication::desktop ()->width();

例如:

 1     全屏顯示:  2        VideoWidget->setWindowFlags (Qt::Window);  3        VideoWidget->showFullScreen ();  4  退出全屏時:  5        VideoWidget->setWindowFlags (Qt::SubWindow);  6        VideoWidget->showNormal ();  7  退出全屏時你可以有鼠標右鍵單擊屏幕彈出菜單獲得,也可以捕獲鍵盤事件獲得如:  8        keyPressEvent(QKeyEvent *keyset)  9  { 10          if(keyset->key()==Qt::Key_Escape){ 11              VideoWidget->setWindowFlags (Qt::SubWindow); 12              VideoWidget->showNormal (); 13      } 14     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM