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

來源:互聯網
上載者:User

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.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.