QPainter

Alles rund um die Programmierung mit Qt
Antworten
Irods
Beiträge: 53
Registriert: 24. Mai 2009 20:57
Kontaktdaten:

QPainter

Beitrag von Irods »

Hi.
Ich versuche gerade mit QPainter klar zu kommen, jedoch klappt das mal so gar nicht.

Ich habe folgendes kleines Test-Programm geschrieben:

Code: Alles auswählen

#include <QtGui>

QWidget *wid;

void paintEvent(QPaintEvent*)
{
	QPainter painter(wid);
	painter.setPen(Qt::blue);
	painter.setFont(QFont("Arial", 30));
	painter.drawText(QPoint(50, 50), "Qt");
}

int main(int argc, char* argv[])
{
	QApplication app(argc, argv);
	wid = new QWidget;
	wid->show();
//Das hier nur weil update() nicht funktioniert hat
	QPaintEvent a(QRect(100, 100, 200, 80));
	paintEvent(&a);
//Ab hier wieder "normal"
	return app.exec();
}
Wenn ich dieses ausführe bekomme ich die Fehlermeldungen:

Code: Alles auswählen

QPainter::begin: Widget painting can only begin as a result of a paintEvent
QPainter::setPen: Painter not active
QPainter::setFont: Painter not active
Außerdem funktioniert "update()" nicht da fängt der kompiler sofort an rum zu schrein das er das ich kennt.

Code: Alles auswählen

error: ‘update’ was not declared in this scope
Deswegen habe ich versucht das mit einem QPaintEvent zu umgehn.

Ich komm damit irgendwie gerade komplett nicht klar, überall wo ich nach gelesen hab stand
es meiner Auffassung nach so beschrieben wie ich es gemacht habe.

Wenn mir einer meinen "Auffassungs-Fehler" schnell erklären könnte wäre das toll.
MfG Irods.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: QPainter

Beitrag von franzf »

paintEvent() ist eine protected-Methode von QWidget, da geht nix mit freier Funktion. Diese wird automatisch von Qt aufgerufen, wenn es was zu Zeichnen gibt. Um was eigenes zu zeichnen, musst du von QWidget ableiten und dort die paintEvent() implementieren.
Irods
Beiträge: 53
Registriert: 24. Mai 2009 20:57
Kontaktdaten:

Re: QPainter

Beitrag von Irods »

Ah danke dann probier ich das gleich mal aus ... hatte gar nicht drauf geachtet ob ich da was vererben muss ...
aber jetzt wo ich es weiss ist es klar :D
Danke.
Antworten