2015-08-08 3 views
1

В настоящее время я создаю приложение, которое использует QML WebView (import QtWebKit 3.0). Пользователям необходимо очень часто изменять размер WebView (я использую QML SplitView), однако это приводит к тому, что пользовательский интерфейс очень сильно отстает всякий раз, когда изменяется окно приложения. Есть ли способ предотвратить это?Как отключить рендеринг в QML WebView?

+0

Вам, вероятно, потребуется просмотреть его и посмотреть, где потрачено время. –

+0

@KubaOber Я сделал это и падение частоты кадров, происходит именно тогда, когда я изменяю размер SplitView (изменяя ширину WebView), когда запускаются функции updateLayout() и moveHandle(). – daljit97

ответ

2

Вместо смены 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 и heightRectangle изменений. При запуске Timer установлено значение real width и height.

Если отношение width и height Rectangle не является постоянным объектом QML Scale. С его помощью вы можете самостоятельно изменить xScale и yScale.

+0

Это хорошая идея. Однако, поскольку я сказал, что использую SplitView, у меня нет контроля над свойством height и width. – daljit97

+0

@ daljit97 Я думаю, что изменение «шкалы» или использование объекта «Масштаб» - это все, что вам нужно. Для получения дополнительной информации см. Мой отредактированный ответ. Если вы все еще не удовлетворены, пожалуйста, укажите простой пример кода, который вы хотите работать без запаздывания. –

+0

Я следил за вашим подходом, и он работает, однако WebView становится невидимым при масштабировании. Это гораздо лучше, чем раньше, спасибо. – daljit97

 Смежные вопросы

  • Нет связанных вопросов^_^