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) } } } }
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.Do you like it? Share on social networks!
- Akiv Doros
- Nov. 12, 2024, 1:58 a.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:50points,
- Rating points-4
- molni99
- Oct. 26, 2024, 11:37 a.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:80points,
- Rating points4
- molni99
- Oct. 26, 2024, 11:29 a.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:20points,
- Rating points-10
Добрый день.
WebEngineView имеет свойство url , в документации на QML для свойств обычно не описывают отдельно сигналы, но как правило свойства имеют и сигналы. Думаю, что вам нужно попробовать навесить обработчик на сигнал изменения этого свойства.
Евгений, спасибо большое - то что нужно! Буду иметь ввиду...сколько всего перерыл - про это вообще ни слова...видимо разработчики Qt подумали, что и так должны быть все в теме)))
Я думаю, что это где-то описано, но в такой глубине документации и максимум в самых базовых вещах, то есть отдельно в классах этого не пишут, просто потому, что придётся писать для каждого класса половину базовой документации.
Но обычно все, кто вдумчиво пользовался макросом Q_PROPERTY в C++ части, уже в курсе того, что из себя представляют свойства. Но согласен, вы не первый, кто мне говорит, что подобный момент не описан в документации.