gpt4 book ai didi

c++ - Qt中的毫米纸

转载 作者:行者123 更新时间:2023-11-30 03:59:39 38 4
gpt4 key购买 nike

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

最佳答案

在重新发明轮子之前,请考虑一些图表库,如 discussed here . QCustomPlotQwt 都很容易包含并且定制起来也不难。两者都提供了几个例子;可能其中之一可以解决您的问题。


如果可用的库不能满足您的需求,您可以通过子类化 QWidget重新实现 painEvent 来创建自己的解决方案()QPainterQPainterPath是任务的关键类。Qt 提供了很多interesting tutorials ,尤其是“基本绘图示例”和“画家路径示例”。可能你也会喜欢 this simple examplethis one .从这些引用资料开始,您应该能够轻松绘制网格。

最后,Graphics View Framework包含 QGraphicsScene哪个(引用文档)

provides a surface for managing a large number of 2D graphical items.

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


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

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

关于c++ - Qt中的毫米纸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26826677/

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