gpt4 book ai didi

c++ - 如何将鼠标坐标转换为 "mm"

转载 作者:太空宇宙 更新时间:2023-11-03 17:24:46 26 4
gpt4 key购买 nike

我正在尝试将从按下鼠标到释放鼠标的距离转换为毫米。我已经计算了距离,但不确定如何转换为正确的单位。

void Widget::mousePressEvent(QMouseEvent* event)
{
if (event->buttons() & Qt::LeftButton)
{
xAtPress = event->x();
yAtPress = event->y();
qDebug() << "Mouse X press: " << xAtPress;
qDebug() << "Mouse Y press: " << yAtPress;
}
}
void Widget::mouseReleaseEvent(QMouseEvent* event)
{
if (event->button() == Qt::LeftButton)
{
int xAtRelease = event->x();
int yAtRelease = event->y();
qDebug() << "Mouse X release: " << xAtRelease;
qDebug() << "Mouse Y release: " << yAtRelease;
int dx = xAtRelease - xAtPress;
int dy = yAtRelease - yAtPress;
qDebug() << "Dx: " << dx;
qDebug() << "Dy: " << dy;


//Create some kind of conversion function here.


}
}

最佳答案

简而言之:
你不能(至少不准确和可靠)。

长:
为了执行最基本的转换,您需要知道像素和毫米之间的转换系数。为了计算这个因素,您需要知道屏幕的分辨率(例如通过 QScreen )和屏幕的真实尺寸——这是有问题的部分。 QScreen 甚至提供了一个 physicalSize() 函数,它返回屏幕的大小(以毫米为单位)——但随后会发出警告

Depending on what information the underlying system provides the value might not be entirely accurate.

这实质上意味着:在最佳情况中,您的显示器正确地提供了该信息,并且您的操作系统正确地处理了该信息,因此您将获得合理的数据; 更有可能你会得到一派胡言; 最坏的情况,您得到的值看起来似是而非,但实际上有些不正确。

本质上,没有可靠的方法可以从操作系统中查询该信息,因此您不能这样做。

关于c++ - 如何将鼠标坐标转换为 "mm",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59669644/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com