Qt窗口中的一些小技術(shù)總結(jié)
//Qt主窗口沒有最小化,最大化按鈕且最大化顯示
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
TestQtForWinCE w;
w.setWindowFlags(w.windowFlags()& ~Qt::WindowMaximizeButtonHint& ~Qt::WindowMinimizeButtonHint);
w.showMaximized();
return a.exec();
}
這里的“&~”是取反以后再按位與的意思,下面的“|”是按位或的意思
//同時禁止最大化最小化按鈕
Qt::WindowMinMaxButtonsHint
//也禁止關(guān)閉
w.setWindowFlags(w.windowFlags() &~ (Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint));
Qt全屏顯示函數(shù)
1、window.showFullScreen()//此方法只對頂級窗口有效,對子窗口無效
2、yourwidget->setWindowFlags(Qt::window | Qt::FramelessWindowHint);
(第一個Qt::window表示此widget是窗口類型,第二個參數(shù)使用無框架就是沒有標(biāo)題,狀態(tài)欄和邊框)
Qt最大化顯示函數(shù) window.showMaximized()
Qt最小化顯示函數(shù) window.showMinimized()
Qt固定尺寸顯示函數(shù) window.resize(x,y)
子窗口全屏顯示:
QT中窗口部件QWidget成員函數(shù)showFullScreen();是用于將窗口部件全屏顯示,但是他只對窗口模式的部件有用。子窗口的特征是 Qt::SubWindow,不是獨(dú)立的窗口。因此對其調(diào)用showFullScreen()無效。通過對對子窗口調(diào) 用:setWindowFlags(Qt::Dialog);或setWindowFlags(Qt::Window);將其設(shè)為窗口模式后,即可調(diào)用 showFullScreen();進(jìn)行全屏顯示了。
如果要還原為普通窗口,調(diào)用setWindowFlags(Qt::subwindow)將子窗口設(shè)置為非頂級窗口,再調(diào)用showNormal()還原子窗口顯示。
參考:
相對于子窗口的全屏顯示方法,不得不提的是子窗口退出全屏的方法。
MFC中,子窗口退出全屏的方法簡單直接,直接調(diào)用SetWindowPos()函數(shù)將子窗口顯示到預(yù)定的位置即可。
QT中,直接使用move和resize對窗口定位是沒有效果的。需要先將子窗口設(shè)位非窗口模式。之后再將窗口移到理想位置。
即先調(diào)用setWindowFlags(Qt::Dialog);或者setWindowFlags(Qt::SubWindow);在調(diào)用move和resize函數(shù)。
有人提到退出全屏?xí)r,調(diào)用showNormal(),再調(diào)setWindowFlags(Qt::SubWindow)。
這有兩個問題:1)showNormal()也是只對頂級窗口有效。2)可以考慮先調(diào)用showNormal()將窗口設(shè)為原來大小,在將窗口設(shè)為子窗口模式。但這樣窗口回到父窗口之中也不會顯示原來的大小。
獲取屏幕寬度和高度
QApplication::desktop()->width() ;
QApplication::desktop()->height() ;
即得到屏幕分辨率,如1024*768,800*600.