Я створив мінімальний клас, щоб продемонструвати свою проблему. Я намагаюся встановити положення курсору, але це не дає ефекту. У своєму прикладі класу я намагаюся зосередити курсор на віджеті. Ось мій клас:
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) вона працює як очікувалося. Дякую за твою допомогу.
Він навіть зараз працює в моєму комп'ютері, після того як я відключив інтеграцію миші.
Дякую всім.