qt — распространять события QML на переполнение стека

Я хотел бы распространять событие из обработчика сигнала QML в процедуру C ++, но не знаю, как передать «объект события». Взгляните на эту ситуацию и обратите особое внимание на SomeType,

Сначала я создаю пользовательский элемент QML со слотом, который можно вызывать из QML:

class Tool : public QQuickItem
{
. . .

public slots:
virtual void onMousePositionChanged(SomeType *event);
}

Затем в QML я создаю MouseArea и экземпляр моего пользовательского объекта, на который я хочу распространять события.

MouseArea {
hoverEnabled: true
onPositionChanged: {
var event = . . .
tool.onMousePositionChanged(event);
}
}

Tool {
id: tool
}

И здесь есть проблема. Я не знаю, как собрать экземпляр SomeType перейти к методу. На самом деле я не знаю, что я должен выбрать как SomeType, В идеале это было бы QQuickMouseEvent чтобы я мог просто позвонить tool.onMousePositionChanged(mouse), но по какой-то причине этот тип недоступен для использования в коде C ++.

Я также рассмотрел QMouseEvent поэтому мне просто нужно переписать свойства, но этот класс, в свою очередь, кажется недоступным для кода QML.

Я новичок в Qt Quick, так что, возможно, я вообще неправильно его использую. Чего я хочу добиться, так это иметь эту базу Tool класс, который имеет эти виртуальные обработчики событий для мыши и клавиатуры, а затем создает коллекцию различных инструментов, которые переопределяют их по мере необходимости. Они должны отображаться в каком-то наборе инструментов, то есть в виде сетки с иконками, из которой пользователь может выбрать текущий инструмент. Выбранный инструмент — тот, который получает события. Любые дизайнерские предложения приветствуются.

4

Решение

Пытаться QEventзатем используйте event->type() для фильтрации тип события.

1

Другие решения


По вопросам рекламы [email protected]