qt - QT5 中的 QwtPlotZoomer 崩溃
问题描述
我试图QwtPlotZoomer
在 QT5 中使用 a ,但是当它的构造函数运行时出现段错误。
class Qwt_widget : public QwtPlot
{
Q_OBJECT
public:
Qwt_widget(QWidget* parent = 0) :
QwtPlot(parent),
m_canvas()
{
QwtPlotZoomer zoomer(&m_canvas); // Crashes here
}
private:
QwtPlotCanvas m_canvas;
};
上面的小部件被添加到一个简单的主窗口中,以便创建它(完整代码在https://github.com/chrisburnham/Qwt_qt5_crash)。这里还有我添加到 QT creators 默认 pro 文件中的 QWT 行:
INCLUDEPATH += /usr/include/qwt
LIBS += -lqwt-qt5
我在 Ubuntu 18.04 上运行并安装了带有libqt5-default
(5.9.5) 的 Qt5 和带有libqwt-qt5-dev
(6.1.3) 的 QWT。我已经用 LDD 检查了我所有的库并查看了我正在使用的头文件,它们都来自与libqwt-qt5-dev
. 我以前QwtPlotZoomers
在 Qt4 中使用过这种方式(使用 QWT 的 Qt4 版本),据我从文档中可以看出,它应该仍然可以在这里工作。
解决方案
在您要求处理它之前,您需要将其分配QwtPlotCanvas
给。请注意,QwtPlot::setCanvas()具有所有权,因此不要为画布使用成员变量。QwtPlot
QwtPlotZoomer
但是由于您使用的是默认值QwtPlotCanvas
而不是某些派生类,因此您可能只使用QwtPlot
附带的画布:
QwtPlotZoomer zoomer(this->canvas()); // Should not crash here
推荐阅读
- android - 在 Google Play 管理中心上传 APK 失败
- nginx - nginx 实时自适应比特率流:- 无法手动切换质量?
- reactjs - 如何将添加键添加到反应选择多?
- python - 从 .py tensorflow 导入 dll 错误创建 .exe
- javascript - 在 JavaScript 中使用带有字母的 unix 时间戳时日期无效
- c# - C#:在 FlowLayoutPanel 中使用 backgroundworker 更改我的矩形的颜色
- java - 我无法访问 Eclipse 中任何现有类的方法。选择方法的自动建议功能不起作用
- postgresql - 我们如何获取 PostgreSQL 使用的主键的默认索引列表?
- r-exams - Exams2nops (r-exams) 的介绍页面
- java - Maven 工件 *-classes.jar 两次部署到存储库 - attachClasses