Название: Подгонка QScrollArea под контент Отправлено: Hort от Октябрь 19, 2008, 12:37 Есть такой класс
Код: class ImageViewDialog : public QDialog Код: ImageViewDialog::ImageViewDialog(const QString& fileName, QWidget* parent) : QDialog(parent) Код: scrollArea->resize(imageLabel->size()); Название: Re: Подгонка QScrollArea под контент Отправлено: shadone от Октябрь 19, 2008, 14:59 мне кажется что простейший вариант - вообще не использовать QScrollArea в данном случае - когда нужно отобразить картинку в реальном масштабе, без полос прокрутки просто использовать потомка QWidget, а когда пользователь хочет увеличить масштаб - добавить QScrollArea и переназначить родителя виджета.
По идее изменение размера виджета QScrollArea под размер viewport также должно работать, но надо пробовать. Что-то вроде scrollArea->resize(scrollArea->viewport()->size()) Кстати Cancel пишется так. Название: Re: Подгонка QScrollArea под контент Отправлено: Hort от Октябрь 19, 2008, 18:18 Оно то может и работает, но я так понимаю после вызова метода exec() все равно все выстраивается по своему.
Вот что я придумал: Код: QSize size=imageLabel->size(); ЗЫ спасибо за Cancel Название: Re: Подгонка QScrollArea под контент Отправлено: pastor от Октябрь 19, 2008, 18:35 2 Hort: Ты непробывал устанавливать свойство widgetResizable в true? Может подойдет такой вариант?
Цитировать If this property is set to true, the scroll area will automatically resize the widget in order to avoid scroll bars where they can be avoided, or to take advantage of extra space Название: Re: Подгонка QScrollArea под контент Отправлено: Hort от Октябрь 19, 2008, 18:45 2 Hort: Ты непробывал устанавливать свойство widgetResizable в true? Может подойдет такой вариант? не подходит - у меня изменяется размер виджета с рисунком (QLabel) при клацаньи на увеличить/уменьшить. при widgetResizable он будет уменьшаться до размерв QScrollArea и при этом не факт, что сохраняться пропорции картинки.Цитировать If this property is set to true, the scroll area will automatically resize the widget in order to avoid scroll bars where they can be avoided, or to take advantage of extra space ключевой момент тут imageLabel->setScaledContents(true); ЗЫ кто знает эвент какой или сигнал чтобы отловить виджет после exec()? или отлавливать наведение на окно мыши? Название: Re: Подгонка QScrollArea под контент Отправлено: EhTemka от Октябрь 20, 2008, 13:09 Цитировать отлавливать наведение на окно мыши? void QWidget::focusInEvent ( QFocusEvent * event )Цитировать чтобы после вызова exec() minimumSize снимался, чтобы дать пользователю возможность уменьшить окно. Может кто-нибуть подскажет как это реализовать лучше всего? А почему бы после вызова ехес не вызывать функцию "съема" minimumSize? Ведь ехес то известно где происходит... Название: Re: Подгонка QScrollArea под контент Отправлено: Alex Custov от Октябрь 20, 2008, 13:16 Цитировать отлавливать наведение на окно мыши? void QWidget::focusInEvent ( QFocusEvent * event )focusInEvent - это клавиатурный фокус, а надо void QWidget::enterEvent ( QEvent * event ) Название: Re: Подгонка QScrollArea под контент Отправлено: EhTemka от Октябрь 20, 2008, 14:18 Цитировать отлавливать наведение на окно мыши? void QWidget::focusInEvent ( QFocusEvent * event )focusInEvent - это клавиатурный фокус, а надо void QWidget::enterEvent ( QEvent * event ) Ваша правда, извиняюсь :) Название: Re: Подгонка QScrollArea под контент Отправлено: Hort от Октябрь 20, 2008, 14:36 А почему бы после вызова ехес не вызывать функцию "съема" minimumSize? метод ехес останавлтвает выполнение кода пока не закроется окно. следовательно если выполнять после него - уже поздно, а если поставить перед - еще рано.Ведь ехес то известно где происходит... решил я это путем перегрузки для диалога showEvent( QShowEvent * ) |