2013-03-19 139 views
3

我正在使用Qt 4.8 我試圖將鼠標光標綁定到我的應用程序的中心。窗口位置相對於Qt窗口的屏幕和窗口的寬度和高度

如果應用程序是在全屏它與下面的代碼

int middleX = QApplication::desktop()->width() >> 1; 
int middleY = QApplication::desktop()->height() >> 1; 

QPoint newMousePos; 
newMousePos.setX(middleX); 
newMousePos.setY(middleY); 
QCursor::setPos(newMousePos); 

和它的作品。

但是,當應用程序不是全屏模式時,我該怎麼做? 我嘗試了幾個網絡代碼,但我找不到它們的工作。我知道我需要獲得窗口的當前幾何形狀,即當前窗口位置w.r.t.監視器和窗口的寬度和高度。

但是,那些功能是什麼?

在此先感謝

+0

不應該將問題重命名爲「如何將光標置於我的應用程序的中間」或類似的東西?因爲目前問題的標題和正文之間存在不匹配... – dtech 2013-03-19 12:01:25

回答

2

它所需要的是這樣的:

QCursor::setPos(geometry().center()); 

這將使光標在你的應用程序窗口的主要部件的死點,無關大小和窗口的位置屏幕。

+0

哪些頭文件需要包含?我得到錯誤:'.center'的左邊必須有class/struct/union – Adorn 2013-03-19 12:05:22

+0

代碼示例暗示這是從QWidget對象中調用的。 – vipw 2013-03-19 12:06:49

+0

@Adorn - QWidget引入了'geometry()'方法,並且可用於每個QWidget派生類 - QDialog,QMainWindow和幾乎QtWidgets模塊中的每個小部件。例如。無論您的應用程序的根視覺表示如何,都調用'geometry()'。 – dtech 2013-03-19 12:07:13