WebEngineView : некорректно работает onLinkHovered при использовании на сенсорных устройствах
Здравствуйте!
Задача стоит такая. В QML через объект WebEngineView происходит просмотр HTML страниц. Необходимо при переходе по ссылке записывать новый адрес в массив (ListModel). Проблема состоит в том, что чтение url после загрузки страницы, например в конструкции типа
onLoadingChanged: { if (loadRequest.status === WebEngineLoadRequest.LoadSucceededStatus) { // здесь читаем url загруженной страницы... } }
не дает ожидаемого результата. Считывается старый url адрес, а не новый.
Однако есть замечательный сигнал onLinkHovered, где используя выше конструкцию можно добиться желаемого результата:
onLinkHovered: { tmpUrl = hoveredUrl } onLoadingChanged: { // LoadSucceededStatus пришлось поменять на LoadStartedStatus, иначе tmpUrl пусто if (loadRequest.status === WebEngineLoadRequest.LoadStartedStatus) { console.log("infoLayout: onLoadingChanged tmpUrl = "+tmpUrl) // в tmpUrl хранится как раз уже новый адрес страницы - ура, товарищи! } }
Казалось бы happyEnd...но на сенсорных устройствах с мультитачем tmpUrl в onLinkHovered всегда пуст как при переходе по ссылкам, так и при наведении на них...Для обработки событий мыши на странице использовал как MouseArea, так и MultiPointTouchArea, результат один - на сенсорных устройствах tmpUrl пустая, при работе на ноутбуке все как надо....
Есть у кого идеи в чем может быть дело? Прикладываю блок кода WebEngineView ниже:
WebEngineView { id: infoLayout anchors.fill: parent MultiPointTouchArea { anchors.fill: parent onReleased: { console.log("infoLayout: MultiPointTouchArea onReleased!!!") } } settings.pluginsEnabled: true settings.playbackRequiresUserGesture: false profile.httpCacheType: WebEngineProfile.NoCache focus: true onLinkHovered: { tmpUrl = hoveredUrl } onLoadingChanged: { if (loadRequest.status === WebEngineLoadRequest.LoadStartedStatus) { console.log("infoLayout: onLoadingChanged tmpUrl = "+tmpUrl) if (tmpUrl.length>0){ listModelHistoryInfo.addPath(tmpUrl) } } } }
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.Вам це подобається? Поділіться в соціальних мережах!
- Akiv Doros
- 11 листопада 2024 р. 14:58
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:50бали,
- Рейтинг балів-4
- molni99
- 26 жовтня 2024 р. 01:37
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:80бали,
- Рейтинг балів4
- molni99
- 26 жовтня 2024 р. 01:29
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:20бали,
- Рейтинг балів-10
Добрый день.
WebEngineView имеет свойство url , в документации на QML для свойств обычно не описывают отдельно сигналы, но как правило свойства имеют и сигналы. Думаю, что вам нужно попробовать навесить обработчик на сигнал изменения этого свойства.
Евгений, спасибо большое - то что нужно! Буду иметь ввиду...сколько всего перерыл - про это вообще ни слова...видимо разработчики Qt подумали, что и так должны быть все в теме)))
Я думаю, что это где-то описано, но в такой глубине документации и максимум в самых базовых вещах, то есть отдельно в классах этого не пишут, просто потому, что придётся писать для каждого класса половину базовой документации.
Но обычно все, кто вдумчиво пользовался макросом Q_PROPERTY в C++ части, уже в курсе того, что из себя представляют свойства. Но согласен, вы не первый, кто мне говорит, что подобный момент не описан в документации.