近期在學習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 }