Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: andrew.k от Июнь 24, 2012, 00:35



Название: QWebView contents size + layout
Отправлено: andrew.k от Июнь 24, 2012, 00:35
Сабж имеет такую реализацию
Код
C++ (Qt)
QSize QWebView::sizeHint() const
{
   return QSize(800, 600); // ####...
}
 
Поэтому в лейауте имеет неоправданно большой размер, даже если этого не требуется (отображаемое содержимое небольшое).
Кто как решал эту проблему?

Как заставить webview занимать меньше места маленьком содержимом.

stretch для других виджетов в лейауте так же не дает эффекта.


Название: Re: QWebView contents size + layout
Отправлено: Fat-Zer от Июнь 24, 2012, 01:14
наследовать QWebView и переопределить sizeHint()... Толсто, зато точно получишь то, что надо...

ну или дальше с sizePolicy играться...


Название: Re: QWebView contents size + layout
Отправлено: andrew.k от Июнь 24, 2012, 17:40
наследовать QWebView и переопределить sizeHint()... Толсто, зато точно получишь то, что надо...

ну или дальше с sizePolicy играться...
Я это пробовал. Не сработало.
Проблема еще вот в чем. Когда QWebView пуст, то согласно условию его высота будет 0 (я делал через setFixedHeight или setMaximumHeight)
Когда в нем появляется контент, он пытается уместить его в текущие размеры.
А определить необходимую высоту никак невозможно до окончания разметки.


Название: Re: QWebView contents size + layout
Отправлено: andrew.k от Июнь 25, 2012, 01:22
Нужный эффект дает обработка сигнала у QWebFrame void contentsSizeChanged(const QSize & size)
Но проблема остается. Т.к. работает это почему-то только в сторону увеличения размера контента.
Если размер контента уменьшается (относительно предыдущего размера), то в обработке сигнала получаем некорректный размер.
Т.е. в сторону увеличения работает (более-менее корректно), в сторону уменьшения нет.
Почему? Загадка.

Пока думаю над тем, может как то очищать QWebView перед загрузкой нового контента.