[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