Я пытаюсь написать графический интерфейс, который рисует график на нем в C ++. Я получаю список ошибок, все из которых говорят:
«QPainter :: begin: рисование виджета может начаться только в результате paintEvent»
Ничто, кажется, не рисует.
main.cpp
#include <QApplication>
#include <QFont>
#include <QPushButton>
#include <iostream>
using namespace std;
#include "skewNormal.h"
#include "ui.h"
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
Window w;
#if defined(Q_OS_SYMBIAN)
w.showMaximized();
#else
w.show();
#endif
return app.exec();
}
ui.h
#ifndef UI_H_INCLUDED
#define UI_H_INCLUDED
#include <QtGui/QMainWindow>
class Window : public QWidget
{
public:
Window();
void paintEvent ( QPaintEvent * event );
};
#endif // UI_H_INCLUDED
ui.cpp
#ifndef GRAPHPN3670_H
#define GRAPHPN3670_H
#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QPaintEvent>
#include <QtGui/QGraphicsView>
#include <QtGui/QHeaderView>
#include <QtGui/QMainWindow>
#include <QtGui/QMenuBar>
#include <QtGui/QStatusBar>
#include <QtGui/QWidget>
#include <QtCore/QRect>
#include <iostream>
using namespace std;
#include "ui.h"
#include "skewNormal.h"
Window::Window()
{
cout<<"Hello1";
}
void Window::paintEvent ( QPaintEvent * event ){
cout<<"Hello from paint event";
QPainter p(this);
int xL = -width() / 2;
int yL = 0;
for(int x = -width() / 2; x < width() / 2; x++)
{
int y = getSkewNormal(0.5, x);
p.drawLine(xL + width() / 2, height() - yL, x + width() / 2, height() - y);
xL = x;
yL = y;
}
}
#endif // GRAPHPE3488_H