Qt pintura sem limpar o fundo
-
10-07-2019 - |
Pergunta
Eu estou usando um QPainter para obter alguns gráficos em uma janela. Infelizmente cada vez que a função paintEvent()
é chamado, toda a janela é limpa. Como posso desenhar sem compensação? Ou seja, como faço para deixar o material do evento pintura anterior intocado?
Eu estou usando Qt4
Solução
Você precisa definir o backgroundMode
usando a setBackgroundMode
setter. A enumeração Qt::NoBackground
é o que você está procurando.
Outras dicas
Uma vez que ambas as respostas são para Qt3 somente, aqui está a solução para Qt4. Você precisa chamar
setAttribute(Qt::WA_OpaquePaintEvent);
(por exemplo, no construtor) seguindo a documentação aqui .
Em Qt3, defina o sinalizador Qt::WNoAutoErase
do WidgetFlags enum para evitar que a janela é limpa em cada evento de pintura.
Você pode definir esse sinalizador, passando-o para o QWidget construtor .