Millimeter paper in Qt

Millimeter paper in Qt

本文关键字:Qt in paper Millimeter      更新时间:2023-10-16

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

在重新发明轮子之前,请考虑此处讨论的一些图表库。QCustomPlotQwt都很容易包含,而且定制起来并不难。两者都提供了几个例子;可能其中之一可能是解决您问题的解决方案。


如果可用的库不能满足您的需求,您可以通过子类化QWidget重新实现painEvent()来创建自己的解决方案。 QPainterQPainterPath是任务的关键类。 Qt提供了很多有趣的教程,特别是"基本绘图示例"和"画家路径示例"。可能你也会喜欢这个简单的例子或这个例子。从这些引用开始,您应该能够轻松绘制网格。

最后,图形视图框架包含QGraphicsScene (引用文档(

提供用于管理大量 2D 图形项的图面。

此类已用于图表目的和网格,利用上面介绍的绘画 API。在使用此类时,为了保证整体良好的性能,在drawBackground()函数中绘制网格至关重要,例如此处(或使用背景位图(。


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

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