Qt視窗操作函式(最大化,全屏,隱藏最大化,最小化)

pamxy發表於2013-06-16

轉自:http://blog.csdn.net/zhangshan415/article/details/8463532

Qt視窗中的一些小技術總結

 

//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

//也禁止關閉

w.setWindowFlags(w.windowFlags() &~ (Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint));

 

 

Qt全屏顯示函式        

1、window.showFullScreen()//此方法只對頂級視窗有效,對子視窗無效

 

2、yourwidget->setWindowFlags(Qt::window | Qt::FramelessWindowHint); 

   (第一個Qt::window表示此widget是視窗型別,第二個引數使用無框架就是沒有標題,狀態列和邊框)

 

Qt最大化顯示函式         window.showMaximized()

Qt最小化顯示函式         window.showMinimized()

Qt固定尺寸顯示函式         window.resize(x,y)

 

 

子視窗全屏顯示

        QT中視窗部件QWidget成員函式showFullScreen();是用於將視窗部件全屏顯示,但是他只對視窗模式的部件有用。子視窗的特徵是 Qt::SubWindow,不是獨立的視窗。因此對其呼叫showFullScreen()無效。通過對對子視窗調 用:setWindowFlags(Qt::Dialog);或setWindowFlags(Qt::Window);將其設為視窗模式後,即可呼叫 showFullScreen();進行全屏顯示了。

        如果要還原為普通視窗,呼叫setWindowFlags(Qt::subwindow)將子視窗設定為非頂級視窗,再呼叫showNormal()還原子視窗顯示。

參考

 

相對於子視窗的全屏顯示方法,不得不提的是子視窗退出全屏的方法。

MFC中,子視窗退出全屏的方法簡單直接,直接呼叫SetWindowPos()函式將子視窗顯示到預定的位置即可。

QT中,直接使用move和resize對視窗定位是沒有效果的。需要先將子視窗設位非視窗模式。之後再將視窗移到理想位置。 

 

即先呼叫setWindowFlags(Qt::Dialog);或者setWindowFlags(Qt::SubWindow);在呼叫move和resize函式。

有人提到退出全屏時,呼叫showNormal(),再調setWindowFlags(Qt::SubWindow)。

這有兩個問題:1)showNormal()也是隻對頂級視窗有效。2)可以考慮先呼叫showNormal()將視窗設為原來大小,在將視窗設為子視窗模式。但這樣視窗回到父視窗之中也不會顯示原來的大小。

 

 

獲取螢幕寬度和高度

QApplication::desktop()->width()  ;

QApplication::desktop()->height() ;

即得到螢幕解析度,如1024*768,800*600.


相關文章