Pergunta

Eu tenho um QGraphicsView com uma imagem e um cursor personalizado. O cursor é feito de duas linhas QPEN. Uma linha de eixo x e uma linha de ponta do eixo y. A cruz das duas linhas é a posição do cursor do mouse. O problema, quando eu amplia o zoom, a cruz não está mais na posição de cursor de mouse. Por exemplo, quando os valores do cursor de mouse são x = 1,4235 ANS y = 2,7732, as linhas de ponta são definidas na posição x = 1 e y = 2. Mas eu quero ter as linhas de bóia na posição de flutuação (x = 1.4235 Ans y = 2,7732). Como eu posso fazer isso.

Posição do mouse eu recebo

def mouseMoveEvent(self,event):
    ...
    ... self.grview.mapToScene(event.pos())
    ...

e as linhas que eu configurei com setPos (). Eu acho que o setPos () converte o float em int. Mas não sei como trabalhar por aí. Espero que alguém tenha uma ideia útil.

Foi útil?

Solução

Eu encontrei o problema. O cara que implementou parte do código antes usou "drawellipse (int x, int y, int width, int altura)" e isso converte flutuar em int. Portanto, a única coisa que eu tive que fazer é substituí -lo por "Drawellipse (const Qpointf & Center, Qreal RX, Qreal ry)". Desculpe pelo problema e obrigado.

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