Я создал минимальный класс, чтобы продемонстрировать свою проблему. Я пытаюсь установить положение курсора, но это не влияет. В моем классе класса я пытаюсь центрировать курсор на виджет. Вот мой класс: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());
}
При перемещении курсора мыши при нажатии на кнопку мыши, я получаю следующие выходные (exmaple):
До: QPoint (754,48) После: QPoint (400 300)
Это означает, что до того, как я назвал QCursor :: setPos (в центре), курсор находится в позиции 754; 48, которая находится в верхнем правом углу виджета. После того, как я установил позицию курсора с помощью QCursor :: setPosition (в центре), курсор должен находиться в центре виджета, а это не так, курсор остается в верхнем правом углу. И к моей дальнейшей путанице QCursor :: pos() возвращает центр виджета, хотя курсор не находится в центре.
Любые подсказки были бы высоко оценены.
Спасибо за ваше время ...
Что вы ожидаете от положения курсора мыши? Какое поведение вы ожидаете? – vahancho
@vahancho Мне бы хотелось, чтобы он был расположен в центре моего виджета. Я знаю, это похоже на раздражающее поведение, но это всего лишь тестовый класс, чтобы продемонстрировать мою проблему. – david
Но может быть, QPoint (467,822) - это уже центр? – vahancho