qt視窗居中顯示

sunflover454發表於2016-03-18
在Qt下,程式執行後視窗預設就是在螢幕中央顯示的,但是後來發現在XP系統下沒有居中顯示,需要手動調整了。

和網上其他方案一樣,大多數人會用類似這樣的程式碼:

move((desktop->width() - this->width())/2, (desktop->height() - this->height())/2);

這段程式碼有兩個問題:
1.這個desktop的寬高是包含了工作列的寬高,會導致在計算視窗位置時不會那麼精確,比如視窗的Top和Bottom值可能會差很多;
2.沒有考慮工作列在左側、上方、右側的情況。

改進後的程式碼如下:

move((qApp->desktop()->availableGeometry().width() - width()) / 2 + qApp->desktop()->availableGeometry().x(),
               (qApp->desktop()->availableGeometry().height() - height()) / 2 + qApp->desktop()->availableGeometry().y());

availableGeometry是返回的不包含工作列的矩形區域,這樣就能保證居中位置更精確,

然後加上availableGeometry的XY座標,這樣就保證程式在那些調整了工作列位置的的桌面上也能出現在正確的位置,而不是和工作列重疊。


原文地址:http://www.lxway.com/146241584.htm

相關文章