Pergunta

Eu estou tentando escrever um programa de pintura (pintura, onde quer que um rato de imprensa / hold é detectado), mas eu estou tendo problemas para usar o Qt QPainter . Eu li a documentação em seu web site e eu ainda estou meio perdido. Um link para um tutorial que não está no seu web site seria bom ou talvez explicar-me como posso fazer isso em Qt. A única coisa que eu consegui fazer é dots Pintura em um widget.

Foi útil?

Solução

Verifique o exemplo Scribble que vem com o Qt, ele faz exatamente o que você quiser.

Nós reimplementar o evento de mouse manipuladores para implementar desenho, o pintar manipulador de eventos para atualizar o aplicação eo evento de redimensionamento manipulador de otimizar do aplicativo aparência. Além disso, Reimplementar o manipulador de eventos perto de interceptar os eventos perto antes de terminar a aplicação.

O exemplo também demonstra como usar QPainter para desenhar uma imagem em tempo real tempo, bem como widgets de repintar.

Outras dicas

Use o QtAssistant e navegue até a entrada em QPainter. De lá você verá links para programas de exemplo utilizando diversas funções de QPainter, como este: http://doc.trolltech.com/4.5/painting-basicdrawing.html

QtAssistant deve ser seu recurso um número. É bastante completo. Então, se isso não ajudar eu recomendo os fóruns em QtCentre . Esses são alguns caras experientes.

Eu posso apenas imaginar qual é seu problema, mas meu palpite é que você está correndo para a idade velha questão do fato de que o paintEvent é usado para atualizar a página. A maneira de implementar um programa de pintura seria a de criar primeiro uma QPixmap ou QImage como seu buffer de desenho. Em seguida, pinte sobre ela em seus métodos de rato prima / mover / libertação. Quando você tiver atualizado o buffer de desenho, todos atualizados (e ser um bom menino e indicar a área na necessidade de actualização). Isso irá provocar uma chamada para o seu método paintEvent, onde você simplesmente blit o retângulo solicitado (QPaintEvent :: rect ()) para a tela.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top