Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: KyberProtagonistes от Сентябрь 01, 2009, 20:17



Название: Резиновый QGraphicsView ???
Отправлено: KyberProtagonistes от Сентябрь 01, 2009, 20:17
Можно ли данный виджет сделать scratched? То есть, чтобы его размер динамически изменялся, в зависимости от того, какую я в него кидаю картинку? Я в кьюте недавно. В Борланд С++ Билдере или в wxDev-C++ это делалось просто установкой флагов Scratched или Autosize  в положение true. А тут я что-то такого не нашёл.

Если такого простым флагом сделать нельзя, то не могли бы вы подсказать, как это реализовать кодом? Я имею ввиду посмотреть размер картинки и присвоить соответствующий размер виджету QGraphicsView. А потом уже загрузить в него эту картинку.


Название: Re: Резиновый QGraphicsView ???
Отправлено: KyberProtagonistes от Сентябрь 01, 2009, 20:19
Кстати, как я понял, картинку запихнуть в QGraphicsView "мышкой" в QDesigner тоже нельзя? Обязательно нужно делать это в коде?


Название: Re: Резиновый QGraphicsView ???
Отправлено: f0x от Сентябрь 01, 2009, 21:05
если я правильно понял тебе нужен QLabel


Название: Re: Резиновый QGraphicsView ???
Отправлено: KyberProtagonistes от Сентябрь 01, 2009, 21:10
И правда, спасибо. Кьют оказывается очень оригинален. Я и предположить не мог, что в объект "лейбл" можно запихнуть картинку...  :D


Название: Re: Резиновый QGraphicsView ???
Отправлено: KyberProtagonistes от Сентябрь 01, 2009, 21:27
Хм. Картинку я туда запихнул. Удобно. Но всё равно не нашёл как сделать этот элемент "резиновым"...  ???


Название: Re: Резиновый QGraphicsView ???
Отправлено: Авварон от Сентябрь 01, 2009, 21:35
в смысле резиновым? у него если контента много, появляются скроллбары. Или тебе нужно растягивать сам виджет, на котором он лежит? Чтоб скроллбаров не было?


Название: Re: Резиновый QGraphicsView ???
Отправлено: KyberProtagonistes от Сентябрь 01, 2009, 21:37
Мне скроллбары не нужны. Я хочу, чтобы если картинка, которую я запихиваю в QLabel имеет размер 10*10, сам QLabel менял свой размер тоже на 10*10. Если картинка 100*100, то чтобы QLabel стал размером 100*100.


Название: Re: Резиновый QGraphicsView ???
Отправлено: f0x от Сентябрь 01, 2009, 21:42
void setScaledContents ( bool )

внимательней читай доки


Название: Re: Резиновый QGraphicsView ???
Отправлено: KyberProtagonistes от Сентябрь 01, 2009, 21:45
Нет, это не то. Если установить это в тру, то он растягивает картинку к размеру кьюлейбла. А мне нужно наооборот: чтобы кьюлейбл растягивался или съёживался в зависимости от размера картинки.


Название: Re: Резиновый QGraphicsView ???
Отправлено: KyberProtagonistes от Сентябрь 01, 2009, 21:48
Нашёл! label->adjustSize(); Всем спасибо, кто натолкнул на мысль! =)


Название: Re: Резиновый QGraphicsView ???
Отправлено: Авварон от Сентябрь 01, 2009, 21:56
осталось только разобраться с макс размером и как следствие - пропорциями)


Название: Re: Резиновый QGraphicsView ???
Отправлено: KyberProtagonistes от Сентябрь 01, 2009, 21:59
На макс. размер есть ограничение. А пропорции, вроде, меня не интересуют: что квадрат, что прямоугольник. Оно ко всему "прилипнет". А мне это и надо  :D


Название: Re: Резиновый QGraphicsView ???
Отправлено: Авварон от Сентябрь 01, 2009, 22:42
я сейчас экспериментировал с лейблом с изображением 2600*3800 точек) адекватно (ограничить размерами хотя бы экрана + пропорции) не получилось его сделать сходу:(


Название: Re: Резиновый QGraphicsView ???
Отправлено: KyberProtagonistes от Сентябрь 02, 2009, 16:27
Я, как уже писал, новичёк в кьюте и не очень шарю в самом Дизейнере. Но Вашу проблему, думаю, можно решить кодом. Получаете в коде программы димэншенсы картинки загружаемой. Видите сразу пропорции. Изменяете размер лейбла в соответствии с пропорциями. А потом делаете для этого лейбла setScaledContents(тру) Как-то так ;)


Название: Re: Резиновый QGraphicsView ???
Отправлено: Авварон от Сентябрь 02, 2009, 18:43
ну это само собой... я пробовал нативные методы, без прямых расчетов...