Qt图形库-QCustomPlot

2021-04-19 16:06:13 浏览数 (1)

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-devlibgl1-mesa-devlibglu1-mesa-dev,例如 通过在bash终端中输入以下内容:

代码语言:javascript复制
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文件,然后从那里处理示例。

0 人点赞