Хобрук: Ваш путь к мастерству в программировании

QML: получение события мыши для MouseArea в C++

Я пытаюсь связать событие мыши MouseArea с C++, но QQuickMouseArea является частным, поэтому я не смог получить сигнал.

Как это:

QObject::connect(mouseAreaObj, SIGNAL(released(QMouseEvent*)),
                 handlerObj, SLOT(handleEvent(QMouseEvent*)));

Есть ли способ решить эту проблему?

А если нет, то интересно, почему Qt не позволяет нам получить доступ к QQuickMouseArea.

17.06.2016

Ответы:


1

Вместо прослушивания сигналов QQuickMouseArea вы можете получить его как QObject и установить handlerObj как фильтр событий вашего mouseAreaObj следующим образом: mouseAreaObj->installEventFilter(handlerObj).

Затем вам нужно будет реализовать eventFilter в файле handlerObj. Может быть, что-то вроде этого:

bool HandlerObject::eventFilter(QObject* obj, QEvent* event)
{
    if (event->type() == QEvent::MouseButtonRelease)
        return handleEvent(static_cast<QMouseEvent*>(event));
    else
        return false;
}
17.06.2016

2

Я сделал соединение в qml mouseArea.clicked.connect(cppObject.onClicked), а затем в C++ просто получил QObject*, который имеет ожидаемые свойства:

void CppClass::onClicked(QObject *event) {
    qDebug() << "clicked" << event->property("x").toInt();
}
29.03.2017
Новые материалы

HMTL - Многозадачное обучение для решения задач НЛП
Достижение результатов SOTA путем передачи знаний между задачами Область обработки естественного языка включает в себя десятки задач, среди которых машинный перевод, распознавание именованных..

Решения DBA Metrix
DBA Metrix Solutions предоставляет удаленного администратора базы данных (DBA), который несет ответственность за внедрение, обслуживание, настройку, восстановление базы данных, а также другие..

Начало работы с Блум
Обзор и Codelab для генерации текста с помощью Bloom Оглавление Что такое Блум? Некоторые предостережения Настройка среды Скачивание предварительно обученного токенизатора и модели..

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

Как свинг-трейдеры могут использовать ИИ для больших выигрышей
По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..