Qt QCursor :: setPos () ничего не делает

Я создал минимальный класс, чтобы продемонстрировать свою проблему. Я пытаюсь установить положение курсора, но это не дает никакого эффекта. В моем примере класса я пытаюсь центрировать курсор на виджете.
Вот мой класс:

class testWidget : public QWidget
{
Q_OBJECT
public:
testWidget();
protected:
virtual void mouseMoveEvent(QMouseEvent* event);
};

И вот реализация:

testWidget::testWidget()
{
setMinimumSize(800,600);
show();
}

void testWidget::mouseMoveEvent(QMouseEvent *event)
{
QPoint before(mapFromGlobal(QCursor::pos()));
QPoint center = mapToGlobal(QPoint(width()/2,height()/2));
QCursor::setPos(center);
qDebug()<<"Before:"<<before<<"After:"<<mapFromGlobal(QCursor::pos());
}

При перемещении курсора мыши при нажатии кнопки мыши я получаю следующий вывод (например):

До: QPoint (754,48) После: QPoint (400,300)

Это означает, что до того, как я вызвал QCursor :: setPos (center), курсор находился в позиции 754; 48, которая находится в верхнем правом углу виджета. После того, как я установил позицию курсора с помощью QCursor :: setPosition (center), курсор должен быть в центре виджета, а это не так, курсор остается в верхнем правом углу. И к моему дальнейшему замешательству, QCursor :: pos () возвращает центр виджета, даже если курсор находится не в центре.

Любые советы будут высоко оценены.

Спасибо за ваше время…

2

Решение

@ Leiaz Вы правы, я работаю на виртуальной машине.
При запуске программы на моей хост-системе (которая также является Ubuntu) она работает как положено.
Спасибо за помощь.

Теперь он работает даже в моей виртуальной машине, после того как я отключил интеграцию с мышью.

Спасибо всем.

2

Другие решения


По вопросам рекламы [email protected]