2013-04-24 17 views
6

Próbuję pomalować niektóre punkty mojego obrazu i nie wiem, dlaczego to nie działa. Zdefiniowałem QImage i chcę zmodyfikować niektóre punkty.Błąd QtPainter Urządzenie z farbą zwróciło silnik == 0, typ 3, Malarz nieaktywny

QImage *cou= new QImage(height,largeur,QImage::Format_Mono); 
    cou->fill(1); 
    QPainter *fig=new QPainter (cou); 
    for (i=0;i<size_;i++) 
    { 
     fig-> drawPoint(floor(propa[i]),nbmax[i]); 
    } 

Kiedy wykonać kod mogę uzyskać

QPainter::begin: Paint device returned engine == 0, type: 3 

oraz w następujących liniach:

QPainter::drawPoints: Painter not active 
+1

Czy można sprawdzić, czy obraz jest zwracana wartość null? http://qt-project.org/doc/qt-4.8/qimage.html#isNull – cmannett85

+0

Sprawdź także rozmiar 'cou',' qDebug() << cou-> size(); ' – lucasmrod

Odpowiedz

19
QPainter::begin: Paint device returned engine == 0, type: 3 

Błąd oznacza, że ​​obraz starasz się malować jest pusty obraz. Użyj opcji isNull na cou, aby to sprawdzić.
Przyczyną obraz jest wartość null może być źle height i largeur params gdy obraz jest zbudowany, czy jesteś z pamięci

2
QPaintEngine* eng = cou->painterEngine(); 
if(eng) { 
// create QPainter ... 
} 
+4

Być może niektóre wyjaśnienia twojej odpowiedzi będą pomocna dla OP i przyszłych odwiedzających tę stronę? –