Seite 1 von 1

Problem mit paintEvent (Widget painting can only begin...)

Verfasst: 15. Januar 2008 14:26
von zwutz
Hallo zusammen...

bevor ich noch länger drüber grübel, frag ich lieber hier nach

Ich hab mein eigenes Widget, abgeleitet von QListView. Wie gewohnt wollt ich paintEvent verwenden, allerdings erscheint beim Ausführen "Widget painting can only begin as a result of a paintEvent"
Ich find aber nichts, was ich anders gemacht habe als sonst

die Headerdatei:

Code: Alles auswählen

#ifndef WLISTVIEW_H
#define WLISTVIEW_H

#include <QListView>

/**
	@author ***
*/

class WListView : public QListView
{
	Q_OBJECT
public:
	WListView( QWidget *parent = 0 );
	~WListView();

protected:
	void paintEvent( QPaintEvent */*event*/ );

public slots:
private:
};

#endif
die CPP-Datei:

Code: Alles auswählen

#include "wlistview.h"
#include <QtGui>

WListView::WListView( QWidget *parent )
: QListView( parent )
{
}

WListView::~WListView()
{
}

void WListView::paintEvent( QPaintEvent */*event*/ )
{
	QPainter painter( this );
}
aufs relevante verkürzt, der fehler kommt aber auch so

Das Widget wird noch in ein anderes Widget eingebunden, das als Hauptfenster dient. Alle übrigen paintEvents aus anderen verwendeten Widgets hab ich bereits auskommentiert, auch das hat nichts daran geändert

wo kann der Fehler liegen? Such ich nur an der falschen Stelle?

Verfasst: 15. Januar 2008 15:41
von Christian81
Mach einen Breakpoint an der Stelle an der die Debug-Mesdsaage ausgegeben wird und schau im Backtrace nach. Irgendwo musst Du paintEvent() oder eine Zeichenfunktion direkt aufrufen - sonst würde der Fehler nicht kommen.

Verfasst: 15. Januar 2008 16:24
von zwutz
Christian81 hat geschrieben:Mach einen Breakpoint an der Stelle an der die Debug-Mesdsaage ausgegeben wird und schau im Backtrace nach. Irgendwo musst Du paintEvent() oder eine Zeichenfunktion direkt aufrufen - sonst würde der Fehler nicht kommen.
ich hab den Code incl main-Funktion auf gerade mal vll effektive 15 Zeilen gekürzt... Das Widget wird direkt als MainWidget verwendet, Konstruktoren und Destruktor gelehrt und alle Memberfunktionen bis auf besagtes PaintEvent auskommentiert... die Meldung kommt trotzdem noch (sogar 3x, davor nur 2x).
Ich bezweifle stark, dass ich da ein zweites paintEvent oder dergleichen übersehen habe
Ich weiß, dass der Fehler wahrscheinlich so derart offensichtlich ist, dass ich nur den sprichwörtlichen Wald nicht sehe, aber ich find trotzdem nichts -.-

Verfasst: 15. Januar 2008 16:38
von Christian81
Wenn es nur noch 15 Zeilen sind, kannst Du sie auch hier posten.

Verfasst: 15. Januar 2008 16:53
von upsala

Code: Alles auswählen

 QPainter painter(viewport()); 

Verfasst: 15. Januar 2008 21:46
von zwutz
Christian81 hat geschrieben:Wenn es nur noch 15 Zeilen sind, kannst Du sie auch hier posten.
der Großteil steht bereits oben. Der Rest ist die obligatorische Main-Funktion
upsala hat geschrieben:

Code: Alles auswählen

QPainter painter(viewport());
danke, werd ich morgen gleich testen

-edit-
Funktioniert, danke. Da hätt ich lang suchen können ^^