Qt官方已经有QCharts模块,如下图所示:
另外还有一个QCustomPlot的基于Qt的第三方图形库,如下图所示:
设置QCustomPlot
- 对于QtCreator用户
- 故障排除
- 编译终止,显示“ GL/gl.h: No such file or directory" or "cannot find -lGL”
- 链接终止,显示:“Undefined reference to QPrinter(...)”
- 将QCustomPlot作为.so/.dll动态库使用
- 运行示例
使QCustomPlot与您的应用程序一起使用非常容易:
- 从下载章节获取最新版本的QCustomPlot。
- 与其他任何普通类文件一样,使用qcustomplot.h和qcustomplot.cpp文件
对于QtCreator用户
右键单击左侧栏中项目的根目录,然后选择添加现有文件…
在出现的文件对话框中,选择qcustomplot.h和qcustomplot.cpp文件,将它们添加到您的项目中。 完成后,您的项目结构和.pro文件应如下所示:
如果您使用的是Qt 5.0或更高版本,则需要在.pro文件中的QT变量中添加printsupport
。 在上面显示的情况下,此操作在greaterThan(QT_MAJOR_VERSION,4)
个条件之后进行。 确保使用较旧的Qt版本时未添加printsupport
(和widgets
)。
现在,该项目可以使用QCustomPlot。 将常规QWidget放在表单上的所需位置。 右键单击它,然后单击 Promote to…。
在出现的对话框中,在“提升的类名”旁边的输入字段中输入QCustomPlot
。 头文件旁边的输入应自动填充正确的qcustomplot.h
值。 点击添加,将QCustomPlot
添加到提升的类列表中,最后点击提升,将窗体上的QWidget
变成QCustomPlot
。
您不会在QtCreator(或QtDesigner)中看到任何直观的视觉变化,但是在运行该应用程序时,您将看到一个带有轴和网格线的空图。 结果如下图所示:
故障排除
编译终止,显示“ GL/gl.h: No such file or directory" or "cannot find -lGL”
在GNU/Linux系统上,确保已安装软件包mesa-common-dev
,libgl1-mesa-dev
和libglu1-mesa-dev
,例如 通过在bash终端中输入以下内容:
sudo apt-get install mesa-common-dev libgl1-mesa-dev libglu1-mesa-dev
链接终止,显示:“Undefined reference to QPrinter(…)”
确保已将模块printsupport
添加到项目文件中的QT
变量中,如上所述。
将QCustomPlot作为.so/.dll动态库使用
使用动态库意味着不将.h/.cpp文件包含到您的项目中,而是与外部qcustomplot.so(GNU/Linux)或qcustomplot.dll(MSWindows)文件链接。 通过设置编译器定义QCUSTOMPLOT_COMPILE_LIBRARY
,可以准备将QCustomPlot
构建为动态库。 要在您的应用程序中使用动态库,请在包含QCustomPlot头文件之前设置定义
QCUSTOMPLOT_USE_LIBRARY`。
下载部分中的sharedlib软件包提供了两个项目来证明这一点:一个编译的QCustomPlot动态库,另一个使用动态库。 这应该很快使您开始使用QCustomPlot作为动态库。
运行示例
下载部分中的QCustomPlot.tar.gz软件包包含示例项目,这些项目已准备好进行编译。 只需将整个程序包提取到一个新目录,在示例目录中导航并运行qmake即可; 制作。 或者,您可以在QtCreator中打开.pro文件,然后从那里处理示例。