2013-03-19 1 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

ответ

2

Все это занимает это:

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

Это поместит курсор в мертвой точке вашего окна приложения главного виджета, агностик размер и положение окна на экран.

+0

, какой заголовочный файл мне нужно включить? Я получаю ошибку: слева от '.center' должен быть класс/struct/union – Adorn

+0

Образец кода подразумевает, что он вызывается из объекта QWidget. – vipw

+0

@Adorn - метод 'geometry()' вводится QWidget и доступен для каждого класса QWidget - QDialog, QMainWindow и почти всех виджета из модуля QtWidgets. Например. вызовите 'geometry()' на любом корневом визуальном представлении вашего приложения. – dtech