首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QMouseEvent::localPos()和高DPI显示(Mac Retina)

QMouseEvent::localPos()和高DPI显示(Mac Retina)
EN

Stack Overflow用户
提问于 2019-02-06 23:12:13
回答 1查看 311关注 0票数 1

使用Qt5.12,Python3,PySide2,MacOS。

mouseMoveEvent处理程序中,QMouseEvent::localPos()返回一个QPointF,但仅具有整数精度:小数点后的数字始终为零。

这意味着,稍微不同的鼠标位置会产生与该位置的数值完全相同的事件。

当我将鼠标移动到稍微不同的位置时,我希望是这样的:

event1:(4.00, 8.00)

event2:(4.50, 8.00)

但我得到了

event1:(4.00, 8.00)

event2:(4.00, 8.00)

在像Apple Retina这样的高DPI显示屏上,我如何区分鼠标事件的细微差别?

EN

回答 1

Stack Overflow用户

发布于 2019-03-15 16:17:04

测试后,QMouseEvent::windowPos() QMouseEvent::screenPos()返回float-accuracy。

因此,我们可以通过mapTo(mainWindow, , QPoint(0, 0))获得localPos

代码

代码语言:javascript
复制
class MyWidget : public QWidget
{
public:
  ...
  MainWindow *getMainWindow() const { return mainWindow; }
  void setMainWindow(MainWindow *win) { mainWindow = win; }

protected:
  void mouseMoveEvent(QMouseEvent *event) override
  {
    auto pos = event->windowPos();
    pos -= mapTo(getMainWindow(), QPoint(0, 0));
    qDebug() << event->localPos() << pos;
  }

private:
  MainWindow *mainWindow;
}

结果

代码语言:javascript
复制
QPointF(2,0) QPointF(2.46875,-0.179688)
QPointF(3,0) QPointF(3.17188,0.171875)
QPointF(3,0) QPointF(3.49609,0.496094)
QPointF(4,1) QPointF(4.19922,0.847656)
QPointF(5,1) QPointF(4.52344,1.17188)
QPointF(5,1) QPointF(4.84766,1.49609)
QPointF(5,2) QPointF(5.17188,1.82031)
QPointF(5,2) QPointF(5.49609,2.14453)
QPointF(6,2) QPointF(5.82031,2.46875)
QPointF(6,3) QPointF(6.14453,2.79297)
QPointF(6,3) QPointF(6.46875,3.11719)
QPointF(7,3) QPointF(6.79297,3.44141)
QPointF(7,4) QPointF(7.11719,3.76563)
QPointF(7,4) QPointF(7.44141,3.76563)
QPointF(8,4) QPointF(7.76563,4.08984)
QPointF(8,4) QPointF(8.08984,4.41406)
QPointF(9,5) QPointF(8.79297,4.76563)
QPointF(9,5) QPointF(9.11719,5.08984)
QPointF(9,5) QPointF(9.44141,5.41406)
QPointF(10,6) QPointF(10.1445,6.11719)
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54556777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档