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中关于窗口全屏显示与退出全屏的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [C/C++] C++声明和定义的区别
- 下一篇: C 风格字符串与C++中string类区