2013-08-16 73 views
3

我想在屏幕的右側顯示我的主窗口。在屏幕右側顯示主窗口(Qt 5.1.0)

我用這個代碼:

QRect r = this->frameGeometry(); 
r.moveRight(QDesktopWidget::availableGeometry()); 
this->move(r.topRight()); 

我收到此錯誤:如果我用1024代替QDesktopWidget::availableGeometry()它的工作原理

error: cannot call member function 'const QRect QDesktopWidget::availableGeometry(int) const' without object

...但我不想staticly初始化...

如何動態地重新定位不同屏幕尺寸的窗口?

回答

3

QDesktopWidget::availableGeometry不是靜態函數。您可以使用QApplication::desktop()功能得到QDesktopWidget對象:

QRect r = this->frameGeometry(); 
r.moveRight(QApplication::desktop()->availableGeometry()); 

,你將不得不把在MoveRight的()函數別的東西。你不能在那裏放置一個QRect。你想要做什麼也許是:

QRect r = QApplication::desktop()->availableGeometry(); 
r.setLeft(r.center().x()); 
this->resize(r.width(), r.height()); 
this->move(r.topLeft()); 

或者,如果你不想調整窗口的大小:

QRect r = QApplication::desktop()->availableGeometry(); 
QRect main_rect = this->geometry(); 
main_rect.moveTopRight(r.topRight()); 
this->move(main_rect.topLeft()); 
+0

我嘗試,但我反應這個錯誤:**錯誤:沒有匹配函數調用'QRect :: moveRight(const QRect)'** – MOC89

+0

@ MOC89是的,我知道。我提到過。見編輯的答案。 – thuga

+0

仍然窗口在屏幕中心:( – MOC89

0

假設有問題的窗口是800×800:

QRect rec = QApplication::desktop()->availableGeometry(); 
move(QPoint((rec.width()-800)/2, (rec.height()-800)/2)); 
相關問題