I am trying to write a graphical interface that draws a graph on it in C ++. I get a list of errors, all of which say: "QPainter :: begin: drawing a widget can only begin as a result of paintEvent" It seems that nothing is being drawn.
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
source share