Millimeter paper in Qt
Millimeter paper in Qt
我必须在我的小部件上绘制一个毫米网格。是否有任何类可以帮助我做到这一点?我需要它来绘制一些数学图表。
在重新发明轮子之前,请考虑此处讨论的一些图表库。QCustomPlot
和Qwt
都很容易包含,而且定制起来并不难。两者都提供了几个例子;可能其中之一可能是解决您问题的解决方案。
如果可用的库不能满足您的需求,您可以通过子类化QWidget
并重新实现painEvent()
来创建自己的解决方案。 QPainter
和QPainterPath
是任务的关键类。 Qt
提供了很多有趣的教程,特别是"基本绘图示例"和"画家路径示例"。可能你也会喜欢这个简单的例子或这个例子。从这些引用开始,您应该能够轻松绘制网格。
最后,图形视图框架包含QGraphicsScene
(引用文档(
提供用于管理大量 2D 图形项的图面。
此类已用于图表目的和网格,利用上面介绍的绘画 API。在使用此类时,为了保证整体良好的性能,在drawBackground()
函数中绘制网格至关重要,例如此处(或使用背景位图(。
所有讨论的 API 都以像素为单位工作。如果您真的关心屏幕上的精确毫米表示,则可以利用QScreen
对象,该对象可从qApp
指针直接访问。它提供了几个函数,特别是physicalDotsPerInch()
(logicalDotsPerInch()
Android,因为另一个在KitKat上返回无限值(。一毫米的像素近似值可以计算如下:
int dotPerMillimeter = qRound(qApp->primaryScreen()->physicalDotsPerInch() / 25.4)
相关文章:
- cuda 10.2 in Qt 5.14 ubuntu 18.04
- QPaintedTextureImage in Qt3D (Qt 5.8)
- 没有成员命名 'setRawData' in 'QwtPlotCurve' - 转换 Qt 4.7 为 Qt 5.8
- 没有成员命名 'setResizeMode' in 'QHeaderView' - 转换 Qt 4.7 为 Qt 5.8
- QT c++ "Windows.h no such a file or dictionary in main.ccp"
- UCHAR to Qstring in QT C++
- AES 256 encryption in C++ and Qt 5
- Qt: set columns in treeView
- unique_ptr in Qt project
- QT QTcpServer in thread;如何在退出时关闭侦听服务器
- Qt控制台应用程序"WARNING: QApplication was not created in the main() thread"
- c++ QT and OpenCV. setMouseCallBack in QLabel?
- QSystemTrayIcon in ubuntu, sni-qt
- Qt textChange() in QTextEdit
- Qt + OpenCV in Debian
- Qt QPainter in paintEvent消除了使用paintGL绘制的图形
- const char* to LPCWSTR in Qt
- Qt GUI in a library?
- Qt 中 OpenCV "Can't load OpenGL extension [glBindBuffer] in function IntGetProcAddress"例外
- 分段错误 - OpenCV 和 Qt in Netbeans on Ubuntu