我创建了一个最小的类来演示我的问题。我正在尝试设置光标位置,但是没有显示任何效果。在示例类中,我尝试将光标居中到小部件。
这是我的课:
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());
}
在按下鼠标按钮的同时移动鼠标光标时,我得到以下输出(示例):
这意味着在我调用QCursor::setPos(center)之前,光标位于小部件右上角的754; 48位置。使用QCursor::setPosition(center)设置光标位置后,光标应位于小部件的中心,而不是小部件的中心,光标停留在右上角。更令人困惑的是,即使光标不在中心,QCursor::pos()也会返回小部件的中心。
任何提示将不胜感激。
感谢您的时间...
最佳答案
@Leiaz是的,我一直在虚拟机中工作。
在我的主机系统(也是ubuntu)上运行程序时,它可以按预期运行。
谢谢您的帮助。
在禁用鼠标集成之后,它现在甚至可以在我的VM中运行。
谢谢大家
关于c++ - Qt QCursor::setPos()什么都不做,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26885507/