/ / Qt QCursor :: setPos () нічого не робить - c ++, qt, ubuntu-12.04, qcursor

Qt QCursor :: setPos () нічого не робить - c ++, qt, ubuntu-12.04, qcursor

Я створив мінімальний клас, щоб продемонструвати свою проблему. Я намагаюся встановити положення курсору, але це не дає ефекту. У своєму прикладі класу я намагаюся зосередити курсор на віджеті. Ось мій клас:

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 (в центрі) курсор знаходиться в положенні 754; 48 знаходиться в правому верхньому куті віджета. Після того як я встановив позицію курсора за допомогою QCursor :: setPosition (у центрі), курсор повинен знаходитись у центрі віджета, якого він не є, курсор залишається у правому верхньому куті. На мій подальший плутанина, QCursor :: pos () повертає центр віджета, навіть якщо курсор не знаходиться в центрі.

Будь-які натяки були б дуже вдячні.

Спасибі за ваш час...

Відповіді:

2 для відповіді № 1

@Leiaz Ви маєте рацію, я працював у віртуальній машині. Під час запуску програми в моїй хост-системі (яка також є ubuntu) вона працює як очікувалося. Дякую за твою допомогу.

Він навіть зараз працює в моєму комп'ютері, після того як я відключив інтеграцію миші.

Дякую всім.