[Qgis-developer] QgsMapToolEmitPoint and cursor
Denis Rouzaud
denis.rouzaud at gmail.com
Tue Feb 7 11:15:05 EST 2012
Hi,
Sorry to come again with this stuff, but I am really puzzled.
I am wondering why I have a constant 9 pixels shift between
QCursor.pos().x()
and
mouseEvent.pos().x() + self.canvas.pos().x() +
self.iface.mainWindow().pos().x()
Can someone explain this to me?
Also I am still looking for a smart way to perform a snap with the
QgsMapTool...
Do you think it could be easily added as an option?
Thanks a lot,
Denis
On 02/06/2012 04:28 PM, Denis Rouzaud wrote:
> Hi Nathan,
>
> Thanks for your reply.
> I am a little bit confused as I do not really know how to set the
> mouse position. I have a solution, but it is not giving the same
> experience as when you create a new feature in a layer:
>
> I use the canvasMoveEvent, I get the point in pixels in the canvas using
> result,snappingResults =
> QgsMapCanvasSnapper(self.canvas).snapToBackgroundLayers(pixPoint,[])
>
> The best I could do is calculating the difference in pixels:
> self.transform = self.canvas.getCoordinateTransform()
> snappedPoint = QgsPoint(snappingResults[0].snappedVertex)
> startPoint =
> self.transform.toMapCoordinates(pixPoint.x(),pixPoint.y())
> dx =
> (snappedPoint.x()-startPoint.x())/self.transform.mapUnitsPerPixel()
> dy =
> (snappedPoint.y()-startPoint.y())/self.transform.mapUnitsPerPixel()
>
> And then setting the cursor by applying this difference:
> qcur = QCursor.pos()
> QCursor().setPos(qcur.x()+dx,qcur.y()-dy)
>
> I am quite sure there is a smarter way, but I cannot find it!
> Also the problem is that the mouse is oscillating using this method.
> The only reason I can give is that canvasMoveEvent is sent again
> before the previously called method has returning, could it be true?
>
> I am a little bit lost in this. I would really appreciate your help!
>
> Thanks again,
>
> Denis
>
>
>
>
> On 02/03/2012 07:37 AM, Nathan Woodrow wrote:
>> Hey Denis,
>>
>> The QCursor setPos
>> <http://developer.qt.nokia.com/doc/qt-4.8/qcursor.html#setPos>methods
>> are static so you shouldn't need to get access to the instance to
>> move the cursor position.
>> *
>> *
>> *- Nathan
>> *
>> On Fri, Feb 3, 2012 at 4:07 PM, Denis Rouzaud
>> <denis.rouzaud at gmail.com <mailto:denis.rouzaud at gmail.com>> wrote:
>>
>> Is there anyway to access the QCursor within QgsMapToolEmitPoint.
>> I see there is a mCursor, but it's protected.
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/qgis-developer/attachments/20120207/a169417f/attachment-0001.html
More information about the Qgis-developer
mailing list