我的代码出了点问题,当我执行我的程序(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
最佳答案
在mainwindow.h中
CreateGui不是一个插槽,它可能是,bot,目前它尚未与任何连接(信号,插槽)关联
MainWindow(QWidget * parent = 0);没有明确的,我不知道你想用明确的话说。 :S
(明确表示可以,感谢@frank)
在mainwindow.cpp中
而不是centralWidget(),您可以添加this关键字,并尝试在继承自QWidget的MainWindow小部件上进行呈现。
像这样的东西:
在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);
之后,它也可以工作。我以前从未使用过这些方法,但是显然最后一种是使用它的首选方法。
问候!