C++ Qt毫米纸

C++ Qt毫米纸,c++,qt,grid,draw,qwidget,C++,Qt,Grid,Draw,Qwidget,我必须在我的小部件上画一毫米网格。是否有任何类可以帮助我做到这一点? 我需要它来画一些数学图表 在重新发明轮子之前,请考虑一些图表库。QCustomPlot和Qwt都很容易包含,也不难定制。两者都提供了几个例子;其中一个可能是解决您的问题的解决方案 如果可用库不能满足您的需要,您可以通过子类化QWidget并重新实现painEvent()来创建自己的解决方案。和是任务的关键类。 Qt提供了很多示例,特别是“基本绘图示例”和“绘制路径示例”。也许你也会喜欢或喜欢。从这些参考开始,您应该能够轻松绘

我必须在我的小部件上画一毫米网格。是否有任何类可以帮助我做到这一点?
我需要它来画一些数学图表

在重新发明轮子之前,请考虑一些图表库。
QCustomPlot
Qwt
都很容易包含,也不难定制。两者都提供了几个例子;其中一个可能是解决您的问题的解决方案


如果可用库不能满足您的需要,您可以通过子类化
QWidget
并重新实现
painEvent()
来创建自己的解决方案。和是任务的关键类。
Qt
提供了很多示例,特别是“基本绘图示例”和“绘制路径示例”。也许你也会喜欢或喜欢。从这些参考开始,您应该能够轻松绘制网格

最后,包含which(引用文档)

提供用于管理大量二维图形项目的曲面

这样一个类已经用于和,并利用了上面介绍的绘画API。在使用该类时,为了保证总体性能良好,在
trackground()
函数中绘制网格(例如,使用背景位图)是至关重要的


讨论的所有API都以像素为单位工作。如果您真正关心屏幕上精确的毫米表示,您可以利用
QScreen
对象,直接从
qApp
指针访问该对象。它提供了多个函数,特别是
physicaldosperinch()
logicalDotsPerInch()
用于Android,因为另一个函数在KitKat上返回无限值)。毫米的像素近似值可以如下计算:

int dotPerMillimeter = qRound(qApp->primaryScreen()->physicalDotsPerInch() / 25.4)

在计算机屏幕上绘制项目时,以像素而不是毫米为单位指定图形。你的目标是可以用毫米打印到打印机上的东西吗,或者你想在屏幕上获得精确的毫米尺寸?你需要知道屏幕分辨率以及屏幕的物理宽度和高度,才能知道如何映射像素。我想在屏幕上获得精确的毫米尺寸。谢谢你的回复。不幸的是,我不能在我的项目中使用Qwt等来实现这一点。但是你的公式可能会有帮助。谢谢,我明白了。嗯,也要考虑一下。其目的是画一把尺子,但你可以在此基础上(和我的公式)实现你的目标。