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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QPixmap -> QGraphicsScene -> QGraphicsView  (Прочитано 7777 раз)
HunteX
Гость
« : Май 23, 2011, 22:06 »

Здравствуйте, я новичек в Qt и так получилось (как всегда Улыбающийся ) - наткнулся на следующую проблему: На форме имеется QGraphicsView, на котором необходимо отобразить QPixmap. Почитал документацию, сделал вот таким образом:

Код
C++ (Qt)
scene->addPixmap(pixmap); // добавление QPixmap в QGraphicsScene
ui->graphicsView->setScene(scene); // добавление QGraphicsScene в QGraphicsView
 

После загрузки изображения, (через некоторое время) мне необходимо загрузить следующее изображение.
Конечно же, перед этим необходимо удалить старый QPixmap и очистить QGraphicsView. Я точно не знаю последовательности удаления и очистки.
Сейчас, удаляя QPixmap я получаю ошибку, видимо сцена еще ссылается на него ...

То есть последовательность действий должна быть такая:
1. Загружаю QPixmap в QGraphicsScene
2. Загружаю QGraphicsScene в QGraphicsView
3. (через некоторое время) Удаляю QPixmap, очищаю QGraphicsScene, QGraphicsView ?
4. Перехожу к п. 1

Вроде объяснил максимально ясно Улыбающийся

Предположим, что QGraphicsView у меня в нескольких экземплярах - почитал про QGraphicsPixmapItem, может стоит хранить их в
QList<QGraphicsPixmapItem> и при необходимости передавать в QGraphicsView ?

Просьба не отсылать ртфм и в гугол. Спасибо!

С Уважением, Андрей.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4746



Просмотр профиля WWW
« Ответ #1 : Май 23, 2011, 22:39 »

как правило, сцена и вью создаются один раз, и там же сцена привязывается ко вью. потом, при добавлении QPixmap сохраняешь указатель на полученный в результате QGraphicsPixmapItem (та даже можно просто QGraphicsItem). захотел удалить его из сцены - вызвал scene->removeItem() для сохраненного айтема и удалил его. если надо держать на сцене более одного элемента - заводишь список/словарь айтемов, или айтемы можно получать через методы items() / itemAt() сцены.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
HunteX
Гость
« Ответ #2 : Май 24, 2011, 05:42 »

как правило, сцена и вью создаются один раз, и там же сцена привязывается ко вью. потом, при добавлении QPixmap сохраняешь указатель на полученный в результате QGraphicsPixmapItem (та даже можно просто QGraphicsItem). захотел удалить его из сцены - вызвал scene->removeItem() для сохраненного айтема и удалил его. если надо держать на сцене более одного элемента - заводишь список/словарь айтемов, или айтемы можно получать через методы items() / itemAt() сцены.
Спасибо! Буду разбираться!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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