2014-11-12 4 views
2

Я создал минимальный класс, чтобы продемонстрировать свою проблему. Я пытаюсь установить положение курсора, но это не влияет. В моем классе класса я пытаюсь центрировать курсор на виджет. Вот мой класс: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() возвращает центр виджета, хотя курсор не находится в центре.

Любые подсказки были бы высоко оценены.

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

+0

Что вы ожидаете от положения курсора мыши? Какое поведение вы ожидаете? – vahancho

+0

@vahancho Мне бы хотелось, чтобы он был расположен в центре моего виджета. Я знаю, это похоже на раздражающее поведение, но это всего лишь тестовый класс, чтобы продемонстрировать мою проблему. – david

+0

Но может быть, QPoint (467,822) - это уже центр? – vahancho

ответ

2

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

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

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