我正在尝试使用qt 5.4.1(和qwt 6.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();
}
我在发布版本中构建了这个项目。任何想法?谢谢!
答案 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的调试版本,所以你必须构建发布和调试,并确保在调试属性中添加路径。