Russian Qt Forum
Октябрь 02, 2024, 19:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: QGraphicsView - вывести изображение под виджет  (Прочитано 13941 раз)
bez_glaz
Гость
« Ответ #15 : Март 06, 2012, 08:58 »

Цитировать
Уточняю свой вопрос - к какому классу(QGraphicsScene, QPixmap или QGraphicsView) будит лучше применять те или иные действия, что бы был "автосайз" по виджету.

Во всяком случае про "ресайз всех элементов на сцене" по этой реплике можно только догадаться. Подмигивающий
ресайз всех элементов на сцене - это моя конечная цель.
А пока у меня 1 элемент и я не могу его даже растянуть по всей форме, при первоначальном запуске программы. Элемент остаётся статичным, при любых изменениях формы (соответственно и изменения виджета QGraphicsView), будь то растяжение или сжатие. В последнем скролы добавляются в виджет.
Записан
BRE
Гость
« Ответ #16 : Март 06, 2012, 09:17 »

А вот с чем работать даже теряюсь, с  QGraphicsScene, QPixmap или QGraphicsView?
У тебя есть два варианта: настроить матрицу view или настроить матрицу scene.
Какой вариант выбрать решать тебе.
С помощью fitInView легко настраивается матрица view, но не намного сложнее самому скалить сцену, что бы она полностью помещалась в view.
Разница будет в том, какую матрицу использовать для обратного преобразования, если понадобиться.
Записан
bez_glaz
Гость
« Ответ #17 : Март 06, 2012, 10:03 »

Да именно так.
У QGraphicsView есть метод fitInView, его можно вызывать из обработчика resizeEvent.

Так первоначальная цель выполнилась всё адекватно авто-скалитя по растяжке/сжатию формы.
Код:
void MainWindow::resizeEvent(QResizeEvent *event)
{
    QRectF rec = scen->sceneRect();
    ui->Mnemo->fitInView(rec,Qt::IgnoreAspectRatio);
}
Теперь следующий вопрос подгружал в сцену изображение следующем методом
Код:
    pix = new QPixmap();
    pix->load("qqq.png");
    scen->addPixmap(*pix);
И как я начитал маны с данной подгрузкой я никак вообще не могу управлял элементом в сцене (задать его начальные координаты и т.д.)
Передо мной стоит задача - добавить в сцену ещё один элемент - то же картинку, но у неё будит определённая область, и определённые начальные координаты относительно сцены.
немного почитав ещё манов я понял, что мне надо сначала создать на сцене объект типа -
Код:
QGraphicsRectItem * QGraphicsScene::addRect ( const QRectF & rect, const QPen & pen = QPen(), const QBrush & brush = QBrush() ) 
А перед этим в параметре brush сделать следующее
Код:
QBrush brush(QColor(255, 255, 255), QPixmap(“qqq2.jpg”));
а в параметре pen
Код:
QPen pen(Qt::NoPen);
и потом уже с Rect манипуляции проводить.
Подход который я описал приемлемый ? Или есть что-то получше ?
« Последнее редактирование: Март 06, 2012, 10:37 от bez_glaz » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #18 : Март 06, 2012, 10:41 »

Подход который я описал приемлемый ? Или есть что-то получше ?
Тебе же была дана ссылка на самый оптимальный вариант.
Зачем нужно изобретать велосипед Непонимающий
Записан

Qt 5.11/4.8.7 (X11/Win)
Bepec
Гость
« Ответ #19 : Март 06, 2012, 10:56 »

Таки ему нужен не "ресайз фона", а "ресайз всех элементов пропорционально размера сцены".

Как ты мог не догадаться? он говорит это очевидно Подмигивающий
Записан
bez_glaz
Гость
« Ответ #20 : Март 06, 2012, 11:35 »

Подход который я описал приемлемый ? Или есть что-то получше ?
Тебе же была дана ссылка на самый оптимальный вариант.
Зачем нужно изобретать велосипед Непонимающий
Как я понял данная ссылка предназначена для перегрузки определённой функции -> ресайз заднего фона, который является пиксмапом.
Я не даром создал тему в разделе "Для новичков". Графику тока начал изучать на Qt. К QPixmap вообще пока не прикасался, а в примере всё около него крутится, если не ошибаюсь.  Грустный
У меня всё получилось и без QPixmap. И хотелось бы и дальше обойтись без него, вплоть до достижения конечной цели. Мне кажется это реально. Хочу понять весь механизм работы именно того пути по которому пошёл я.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #21 : Март 06, 2012, 11:39 »

Как я понял данная ссылка предназначена для перегрузки определённой функции -> ресайз заднего фона, который является пиксмапом.
Я не даром создал тему в разделе "Для новичков". Графику тока начал изучать на Qt. К QPixmap вообще пока не прикасался, а в примере всё около него крутится, если не ошибаюсь.  Грустный
Ошибаешься. Смотри внимательно код. Там как раз всё под QImage заточено.
Записан

Qt 5.11/4.8.7 (X11/Win)
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.113 секунд. Запросов: 23.