我的代码出错了,当我执行我的程序时(QWT的一个例子)我收到此错误(程序意外完成)为什么我收到此错误消息以及如何解决?
由于
这是我的代码:
main.cpp
#include "mainwindow.h"
#include <QtGui>
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
w.resize(400, 450);
return a.exec();
}
mainwindow.cpp
#include "mainwindow.h"
MainWindow:: MainWindow(QWidget *parent) :
QMainWindow(parent)
{
CreateGui();
}
MainWindow::~MainWindow()
{
}
void MainWindow::CreateGui()
{
QwtPlot *myPlot = new QwtPlot(centralWidget());
QwtPlotCurve *courbe = new QwtPlotCurve("Courbe 1");
QLineEdit *test = new QLineEdit;
QVector<double> x(5);
QVector<double> y(5);
// On entre des valeurs
for(int i=0;i<5;i++)
{
x.append((double)i);
y.append((double)(5-i));
}
courbe->setSamples(x.data(),y.data(),x.size());
myPlot->replot();
courbe->attach(myPlot);
QGridLayout *layout = new QGridLayout;
layout->addWidget(myPlot, 0, 1);
layout->addWidget(test,1,0);
centralWidget()->setLayout(layout);
}
and mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QObject>
#include <QMainWindow>
#include<QLineEdit>
#include<QGridLayout>
#include <qwt_plot.h>
#include <qwt_plot_curve.h>
class MainWindow: public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent=0);
~MainWindow();
private:
private slots:
void CreateGui();
};
#endif // MAINWINDOW_H
答案 0 :(得分:-1)
中的
CreateGui不是一个插槽,也许它可以,机器人现在它不会被连接到任何连接(信号,插槽)
<击> MainWindow(QWidget * parent = 0);没有那么明确,我不知道你想用明确的说法。 :S 击> (显然很好,多亏了@frank)
在mainwindow.cpp中
而不是centralWidget()你会添加一个this关键字,并尝试在MainWindow小部件上呈现,它继承自QWidget。
类似的东西:
在mainwindow.cpp上:
void MainWindow::CreateGui()
{
QwtPlot *myPlot = new QwtPlot(this);
QwtPlotCurve *courbe = new QwtPlotCurve("Courbe 1");
QLineEdit *test = new QLineEdit;
QVector<double> x(5);
QVector<double> y(5);
// On entre des valeurs
for(int i=0;i<5;i++)
{
x.append((double)i);
y.append((double)(5-i));
}
courbe->setSamples(x.data(),y.data(),x.size());
myPlot->replot();
courbe->attach(myPlot);
QGridLayout *layout = new QGridLayout;
layout->addWidget(myPlot, 0, 1);
layout->addWidget(test,1,0);
this->setLayout(layout);
}
或者将centralWidget设置为某个东西,因为在任何地方都没有setCentralWidget(QWidget *)调用,因为@frank将其命名为。
该文档说如果以前没有设置centralWidget()将返回零。 并显示setCentralWidget(qwidget*)方法的链接。
我在构造函数中添加了@frank行。
this->setCentralWidget(new QWidget);
之后它也有效。我之前从未使用过这些方法,但显然最后一种是使用它的首选方式。
问候!