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