import QtQuick Item { id: root property bool fillWindowWidth: false; property real extraVerticalMargin: 0; property alias mouseArea: mouseArea; property alias hoverEnabled: mouseArea.hoverEnabled; property alias acceptedButtons: mouseArea.acceptedButtons; property alias pressedButtons: mouseArea.pressedButtons; property alias containsMouse: mouseArea.containsMouse; property alias isPressed: mouseArea.pressed; signal clicked(event: MouseEvent); signal entered(); signal exited(); signal pressed(event: MouseEvent); signal released(event: MouseEvent); signal wheel(event: WheelEvent); MouseArea { id: mouseArea anchors { fill: parent // not much point in finding exact values leftMargin: root.fillWindowWidth ? -50 : 0 rightMargin: root.fillWindowWidth ? -50 : 0 topMargin: -root.extraVerticalMargin bottomMargin: -root.extraVerticalMargin } Component.onCompleted: { this.clicked.connect(root.clicked); //this.entered.connect(root.entered); //this.exited.connect(root.exited); //this.pressed.connect(root.pressed); this.released.connect(root.released); //this.wheel.connect(root.wheel); } // for some reason MouseArea.pressed is both a prop and signal so connect doesn't work onPressed: event => root.pressed(event); // connecting to onwheel seems to implicitly accept it. undo that. onWheel: event => { event.accepted = false; root.wheel(event); } } }