c + + - Qt-widget mangler at male efter visse betingelser

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har et mærkeligt problem med en widget, der ikke gentager i lang tid.


Jeg har en ikke-Qt-tråd, der afspiller lyd og periodisk indsender en brugerdefineret begivenhed til min GUI-tråd, baseret på lydafspillingsposition. GUI-tråden reagerer ved at generere visuel feedback (f.eks. Visningsetiket oven på en widget) og påberåbe sig repaint () på sig selv. Dette virker godt på Mac OSX, og det virker fint indenfor en enhedsprøveansøgning. Jeg har, der udfører funktionaliteten på Windows (XP og 7), men widgeten gengiver ikke korrekt i min rigtige applikation på Windows XP/7, indtil lydafspilningen er færdig.


Korrekt adfærd iagttaget på OSX og inden for min enhedsprøve:


-> Custom Event
-> QEvent::Paint (12)
-> Custom Event
-> QEvent::Paint (12)
etc.


Forkert opførsel observeret i min aktuelle ansøgning:


-> Custom Event 
-> QEvent::UpdateRequest (77)
-> Custom Event  
-> QEvent::UpdateRequest (77)
etc.
-> QEvent::Paint (12)


Jeg har forsøgt forskellige ting for at tvinge gentematerialet til at forekomme, fx QCoreApplication :: processEvents, men alting til ingen nytte. Jeg har også forsøgt at eliminere inter-thread-begivenheder som en synder og brugt en periodisk timer til at afstemme den aktuelle lydposition fra GUI-tråden og opdatere widgeten, også uden held og lykke.


Eventuelle ideer om, hvordan man yderligere diagnosticerer dette ville blive meget værdsat!

Bedste reference


Har du forsøgt at ringe malerhændelseshandleren direkte? dvs. paintEvent(NULL)