QML Webview отображает элементы SELECT со смещением по оси X - PullRequest
1 голос
/ 18 августа 2011

В настоящее время я внедряю WebView, который содержит веб-страницу с элементом выбора формы на странице. Всякий раз, когда я нажимаю на поле выбора, на странице появляется диалоговое окно с возможными значениями.

Диалог не центрируется внутри WebView или родительского элемента. На симуляторе он появляется чуть ниже выпадающего окна на веб-странице, но он слишком широк, чтобы поместиться на экране (скрывая полосу прокрутки), а на устройстве - в левом нижнем углу экрана.

У кого-нибудь есть опыт с этим? Я просто использую элемент QML WebView, и его нет в Flickable (что я изначально думал, что это проблема)

Фон и расследование

Два подхода к визуализации эта страница :

Простой проект, использующий Qt QWebview и работающий на симуляторе, дает следующее:

enter image description here

Примечание: меню выбора - это полная ширина окна.

С простым проектом, который использует следующий QML:

import QtQuick 1.0
import QtWebKit 1.0

Rectangle {
    anchors.fill: parent

    WebView {
            anchors.fill: parent
            url: "http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_option"
    }
}

даст следующие результаты:

Webview from QML

Что я здесь не так делаю? Что мне нужно сделать с моим QML, чтобы он правильно отображал меню?

1 Ответ

1 голос
/ 25 августа 2011

Хорошо.Это чувствует себя неправильно.

Я не могу поверить, что на моей доске есть история: «Как пользователь Qt, я могу выбирать значения из длинного списка».

Так что мое решение для этого - добавить кусокJavascript в Webview с использованием evaluateJavascript, который сканирует DOM в поисках элементов SELECT.

Когда выбирается выбор, затем вызывается QML со списком параметров, а затем отображается версия выбора QMLкоробка.

Обратный путь проще, но не выглядит привлекательным.

Я попытался добавить прослушиватель щелчка или касания к выбранным элементам, но API DOM не завершен (попытается найтиканоническая ссылка), и ничего, что я пробовал, не вызовет обработчик.В конце концов я спрятал его и добавил вставленную кнопку на его место.

Должен быть лучший способ.

...