В настоящее время я создаю приложение, которое использует QML WebView
(import QtWebKit 3.0
). Пользователям необходимо очень часто изменять размер WebView
(я использую QML SplitView
), однако это приводит к тому, что пользовательский интерфейс очень сильно отстает всякий раз, когда изменяется окно приложения. Есть ли способ предотвратить это?Как отключить рендеринг в QML WebView?
ответ
Вместо смены width
и height
изменить недвижимость scale
Недвижимость WebView
.
- В начале изменения размера сохранить начальные значения
width
иheight
. - На изменение размера не изменяется
width
иheight
. Вместо этого установитеscale
в newWidth, разделенный на ширину в начале изменения размера. - Когда изменение размеров концов установить новые значения
width
иheight
этих свойств и установитьscale
1.
EDIT: Поскольку вы не контролируете width
и height
свойств, которые можно заменить WebView
с Rectangle
с цвет установлен на "transparent"
. Затем вы можете разместить WebView
по телефону Rectangle
и посмотреть, как width
и height
из Rectangle
меняются.
Теперь две вещи.
Если вы не знаете, когда начинается изменение размера и когда заканчивается использование Timer
с интервалом, например, 100 мс. Перезагрузите Timer
и обновите scale
каждый раз width
и height
Rectangle
изменений. При запуске Timer
установлено значение real width
и height
.
Если отношение width
и height
Rectangle не является постоянным объектом QML Scale
. С его помощью вы можете самостоятельно изменить xScale
и yScale
.
Это хорошая идея. Однако, поскольку я сказал, что использую SplitView, у меня нет контроля над свойством height и width. – daljit97
@ daljit97 Я думаю, что изменение «шкалы» или использование объекта «Масштаб» - это все, что вам нужно. Для получения дополнительной информации см. Мой отредактированный ответ. Если вы все еще не удовлетворены, пожалуйста, укажите простой пример кода, который вы хотите работать без запаздывания. –
Я следил за вашим подходом, и он работает, однако WebView становится невидимым при масштабировании. Это гораздо лучше, чем раньше, спасибо. – daljit97
Вам, вероятно, потребуется просмотреть его и посмотреть, где потрачено время. –
@KubaOber Я сделал это и падение частоты кадров, происходит именно тогда, когда я изменяю размер SplitView (изменяя ширину WebView), когда запускаются функции updateLayout() и moveHandle(). – daljit97