Форум программистов, компьютерный форум, киберфорум
QML
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 27.02.2017
Сообщений: 5

Как поймать событие нажатия мыши в WebEngineView в QML

07.05.2019, 22:08. Показов 1847. Ответов 1
Метки qml, qt (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Имеется следующего вида код в QML:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
import QtQuick 2.12
import QtWebEngine 1.8
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
 
Item {
....
    WebEngineView {
        id: infoLayout         
        anchors.fill: parent  
    }
}
В WebEngineView идет просмотр HTML контента. В программе работает таймер, который отвечает за запуск скринсейвера, если в окне ничего не происходит. По задумке таймер должен сбрасываться по касанию экрана пользователем. Стандартная вставка кода (вне блока WebEngineView), типа:
C++ (Qt)
1
2
3
4
5
6
7
MouseArea {
        anchors.fill: parent
 
        onPressed: {
            saverVisable.restart()
            console.log("CLICK!!!")
        }
приводит к тому, что перекрывает весь экран WebEngineView и нельзя работать с HTML конентом. Если MouseArea вставить внутри блока WebEngineView, то вовсе ничего не происходит. Пробовал вариант через Action, типа
C++ (Qt)
1
2
3
4
5
6
7
Action {
    shortcut: "Escape"
    onTriggered: {
        console.log("Escape pressed.");
        saverVisable.restart()
    }
}
работает, однако, я как понял из доков, в shortcut нельзя задавать события нажатия клавиш мыши (или можно?? поправьте меня пожалуйста, если это не так). Пробовал через onActiveFocusOnPressChanged, он почему-то тоже никак не реагирует, подозреваю что неправильно инициализирую... И еще осталась надежда на runJavaScript, однако его тоже нужно вызывать по наступлению какого либо события, поэтому кусок кода
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
onActiveFocusOnPressChanged: {
 
            runJavaScript ('onClick();', function(result) {
                res = result;
            });
 
            if (res === "true") {
                saverVisable.restart()
                console.log(res)
            }
        }
тоже никакого результата не дал... неужели в WebEngineView QML нет простого и лаконичного обработчика нажатия мыши...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.05.2019, 22:08
Ответы с готовыми решениями:

Как поймать событие нажатия пальцами на экран?
Добрый день. Хочу поймать событие нажатия пальцами на экран. Использую public boolean onTouchEvent (MotionEvent event) - но...

QML обработка нажатия мыши
День добрый. Возникла задача работать с qml. До этого с ним не сталкивался. Задача простая как тапочек, но видно лыжи не едут :( Есть...

QML обработка события нажатия мыши
Rectangle{ color:"red" id:rectanglered anchors.fill: parent MouseArea{ anchors.fill: parent ...

1
0 / 0 / 0
Регистрация: 27.02.2017
Сообщений: 5
09.05.2019, 12:10  [ТС]
Вдруг кому пригодится. Убил на это кучу времени. Есть такой параметр propagateComposedEvents в MouseArea, который включает передачу событий мыши ни нижние уровни и по идее должно было все работать, но он не помогал, по прежнему блокируя работу с HTML контентом. Однако если добавить такую простую строчку, как разрешение дальнейшей обработки мыши mouse.accepted = false, все начинало работать как надо. В общем добавка такого вот отельного блока в QML файл помогла решить проблему
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
 MouseArea {
        anchors.fill: parent
        propagateComposedEvents: true   // включаем передачу событий мыши ни нижние уровни
 
        onPressed: {
            saverVisable.restart()      
            console.log("CLICK!!!")
            mouse.accepted = false      // разрешаем дальнейшую обработку мыши
        }
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.05.2019, 12:10
Помогаю со студенческими работами здесь

QML обработка события нажатия кнопки мыши
Собственно. Есть вот такой вот main.qml: import QtQuick 1.1 Rectangle { id: rectangle2 width: 360 height: 360

Как отловить событие нажатия левой кнопки мыши по дочернему элементу
Всем добрый день. Уважаемые форумчане прошу Вашей помощи в разрешении следующей проблемы, может это и не проблема, но как её решить я не...

Консоль ловит событие MOUSE_MOVED после нажатия на кнопку мыши, в то время как мышь не движется
Разбираюсь с консолью по примерам с microsoft docs. Код я взял отсюда. Консоль ловит события от клавиатуры, изменения размеров буфера...

Событие нажатия колеса мыши
Хочу сделать так, чтобы при нажатии колесом мыши в текстовом поле происходило некоторое действие. События для отслеживания нажатия правой и...

Событие нажатия кнопки мыши в Юзер Контроле
Есть output : UserControl, подписка на событие внутри контрола, this.Click += new System.EventHandler(this.Output_Click); ... ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru