Qt与qwt运行时错误:QWidget:必须在QWidget之前构造一个QApplication

时间:2015-05-12 08:06:44

标签: c++ qt runtime qwt

我正在尝试使用qt 5.4.1(和qwt 6.1.2)创建一个应用程序。这是我的环境:

  • Windows 7 x64
  • visual studio 2012
  • Qt5.4.1 static
  • qwt6.1.2

我已经成功地使用我的Qt静态库构建了qwt。 我创建了一个从QwtPlot继承的widget类,我创建了一个mainWindow,它有一个widget的对象。然后我构建了这个项目。 但是,存在运行时错误: QWidget:必须在QWidget之前构建QApplication

这是我从QwtPlot继承的widget类:

#pragma once

#include <QWT/qwt_plot.h>
#include <QWT/qwt_plot_curve.h>



class DrawWidget: public QwtPlot
{
public:
	DrawWidget(QWidget *parent );
	~DrawWidget(void);
};

DrawWidget::DrawWidget(QWidget *parent )
	 :   QwtPlot( parent ),
	 carve(NULL)
{
	
}

以下是我的mainWindow课程:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H


#include "DrawWidget.h"

#include <QtWidgets/QMainWindow>

class MainWindow : public QMainWindow
{
	Q_OBJECT


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

private:
    DrawWidget *drawWidget;
	

};

#endif // MAINWINDOW_H

  MainWindow::MainWindow(QWidget *parent)
	  :QMainWindow(parent)
  {
     QWidget *widget = new QWidget(this);
     this->setCentralWidget(widget);
	 QHBoxLayout *mainLayout = new QHBoxLayout(widget);

	 drawWidget = new DrawWidget(widget);

     mainLayout->addWidget(drawWidget);
     centralWidget()->setLayout(mainLayout);

  }

这是我的main.cpp:

#include "mainwindow.h"
#include <QtWidgets/QApplication>
#include <QtPlugin>
Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin);

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
	MainWindow w;
	w.resize(1000,600);
	w.show();
	return a.exec();
}

我在发布版本中构建了这个项目。任何想法?谢谢!

2 个答案:

答案 0 :(得分:2)

我几周前遇到了同样的问题,在我的情况下问题是附加库。确保您获得了用于调试构建和发布版本的附加库调试的构建。在构建发行版本时(而不是同时构建版本)构建调试版本和AdditionalLibraryRelease / bin时,将AdditionalLibraryDebug / bin文件夹添加到Path环境变量

祝你好运:)我用这种方式解决了我的问题。 :)

答案 1 :(得分:0)

我发现这非常有用

http://www.itk.org/Wiki/VTK/FAQ#Shared_builds_of_VTK_and_debugging_QVTKWidget_using_Visual_Studio

实际上,库依赖于VTK的调试版本,所以你必须构建发布和调试,并确保在调试属性中添加路径。