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() возвращает центр виджета, даже если курсор находится не в центре.
Любые советы будут высоко оценены.
Спасибо за ваше время...
1 ответ
@Leiaz Вы правы, я работаю на виртуальной машине. При запуске программы на моей хост-системе (которая также является Ubuntu) она работает как положено. Спасибо за помощь.
Теперь он работает даже в моей виртуальной машине, после того как я отключил интеграцию с мышью.
Спасибо всем.