So this kinda works, but I can't set the widget to be fully transparent without losing the mouseMoveEvent.
Any ideas?

from PySide import QtGui
from PySide import QtCore

class ModalScaleWidget(QtGui.QWidget):

    scaling = QtCore.Signal(float)

    def __init__(self, parent=None):
        super(ModalScaleWidget, self).__init__(parent)
        self.setWindowOpacity(0.1)
        self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
        self.setCursor(QtCore.Qt.SizeBDiagCursor)

    def mouseMoveEvent(self, event):
'''Emit signal with the distance to the position of the first click'''
        point = event.pos() - self.posOnClick
        self.scaling.emit(point.manhattanLength())

    def mousePressEvent(self, event):
        '''Store the initial position when the user clicks'''
        self.posOnClick = event.pos()

    def mouseReleaseEvent(self, event):
        '''Close widget when mouse is released'''
        self.close()

    def keyPressEvent(self, event):
        '''Close widget when escape key is pressed'''
        if event.key() == QtCore.Qt.Key_Escape:
            self.close()

        super(ModalScaleWidget, self).keyPressEvent(event)

def test(distance):
    print distance

if __name__ == '__main__':
    import sys
    app = QtGui.QApplication(sys.argv)
    w = ModalScaleWidget()
    w.scaling.connect(test)
    w.showFullScreen()
    w.show()
    w.raise_()
    sys.exit(app.exec_())






On 14/02/16 6:39 pm, Frank Rueter | OHUfx wrote:
Hi all,

I am keen to figure out how I can create a mode that will output the result of a simple gesture, such as a horizonal or vertical drag. This is not for phones/tablets, but rather for "invisible sliders", where the user can press a hotkey to go into a certain "mode", then click/drag to perform a certain action (such as scaling or drawing a line on the screen).

First I was thinking about an invisible widget that opens in full screen and grabs the mouse event, but that seemed rather brute force and ugly. Then I saw the docs for QGestureEvent but the examples I found are sparse and all in C++. I'd be happy to explore those more but I'm not sure if I'm even on the right track here.

Can somebody point me in the right direction please?

Cheers,
frank




--
ohufxLogo 50x50 <http://www.ohufx.com> *vfx compositing <http://ohufx.com/index.php/vfx-compositing> | *workflow customisation and consulting <http://ohufx.com/index.php/vfx-customising>* *



_______________________________________________
PySide mailing list
PySide@qt-project.org
http://lists.qt-project.org/mailman/listinfo/pyside

--
ohufxLogo 50x50 <http://www.ohufx.com> *vfx compositing <http://ohufx.com/index.php/vfx-compositing> | *workflow customisation and consulting <http://ohufx.com/index.php/vfx-customising>* *

_______________________________________________
PySide mailing list
PySide@qt-project.org
http://lists.qt-project.org/mailman/listinfo/pyside

Reply via email to