将QwtPlot添加到代码时的Segfault

时间:2013-05-09 18:12:39

标签: c++ qt segmentation-fault qwt

我尝试使用QwtPlot,但是当我将此行添加到MainWindow.cpp

QwtPlot *plot = new QwtPlot(QwtText("Demo"), this);

应用程序编译和链接没有错误,但是当我尝试运行它时,我得到了

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff514227c in ?? () from /usr/lib/libQtGui.so.4

没有任何回溯。我的.pro文件:

INCLUDEPATH += /usr/include/qwt
CONFIG += qwt
LIBS += -lqwt

我正在使用Qwt 6.0.2,Qt Creator 2.7.0并安装了Qt 4.8.4和5.0.2。

当我创建“Qt Gui应用程序”(没有.ui文件)并且只是这段代码时,错误也会出现:

qwt-test.pro

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = qwt-test
TEMPLATE = app

INCLUDEPATH += /usr/include/qwt
CONFIG += qwt
LIBS += -lqwt

SOURCES += main.cpp\
        MainWindow.cpp

HEADERS  += MainWindow.hpp

的main.cpp

#include "MainWindow.hpp"
#include <QApplication>
#include <QDebug>

int main(int argc, char *argv[])
{
    qDebug() << "main";
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

MainWindow.hpp

#ifndef MAINWINDOW_HPP
#define MAINWINDOW_HPP

#include <QMainWindow>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
};

#endif // MAINWINDOW_HPP

MainWindow.cpp

// MainWindow.cpp
#include "MainWindow.hpp"

#include <qwt_plot.h>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    QwtPlot *plot = new QwtPlot(QwtText("Demo"), this);
}

MainWindow::~MainWindow()
{
}

谢谢!

1 个答案:

答案 0 :(得分:3)

这是Qt Creator的一个问题(或者Qwt与Qt 5不兼容),它认为qmake为Qt 4的Qmake,但它是Qt 5.修复了选项中的版本 - &gt;构建和运行 - &gt; Qt版本和使用Qt 4为项目修复了segfault。