Russian Qt Forum

Qt => Вопросы новичков => Тема начата: OldWiseCat от Ноябрь 28, 2012, 15:07



Название: Не перерисовывается пиксмап на сцене
Отправлено: OldWiseCat от Ноябрь 28, 2012, 15:07
Изучаю кьют, модифицирую пример AnimatedTiles под слайдшоу. Картинки бегают, аимируются, но не работает динамическое обовление содержимого пиксмапа. Я создал вектор пиксмапов и засунул его в сцену
   
Код:
QGraphicsScene scene(0, 0, 1280, 768);
QVector <Pixmap *> photos_thumbnails;
for (int i=0; i< queue_size; ++i)
    {
        scene.addItem(Queue->photos_thumbnails.at(i));
    }
обновлять содержимое пиксмапа собираюсь так
Код:
Pixmap *photo_thumbnail = new Pixmap(kineticPix);
        photo_thumbnail->setOffset(0, 0);
        photo_thumbnail->setZValue(i);
        photos_thumbnails[i] = photo_thumbnail;
Подскажите, может что-то надо вызывать для обовления?
   


Название: Re: Не перерисовывается пиксмап на сцене
Отправлено: _OLEGator_ от Ноябрь 28, 2012, 15:26
Ты создаешь новый пиксмап и меняешь указатель в массиве на новый, что ты ожидаешь от таких действий?
Посоветовал бы сначала учить плюсы.


Название: Re: Не перерисовывается пиксмап на сцене
Отправлено: OldWiseCat от Ноябрь 28, 2012, 16:31
Да, действительно, надо было воспользоваться методом   void   setPixmap ( const QPixmap & pixmap ); Осталось разобраться что при этом происходит с памятью


Название: Re: Не перерисовывается пиксмап на сцене
Отправлено: Igors от Ноябрь 28, 2012, 16:39
Я ожидаю изменения указателя, чтобы во время перерисовки пиксмапа было обращение к новой области памяти. Я не прав, признаю, и надо менять саму область памяти, но как тогда заменить то, что находится по адресу указателя? обычное присвоение *photos_thumbnails[0]= kineticPix; ругается на /usr/include/qt4/QtCore/qobject.h:333: ошибка: 'QObject& QObject::operator=(const QObject&)' is private
Вам надо вызвать QGraphicsPixmapItem::setPixmap, а от того что Вы поменяли что-то в контейнере указателей - толку никакого. Из кода что Вы привели неясно зачем вообще тот контейнер.

Код:
QGraphicsScene scene(0, 0, 1280, 768);
QVector <Pixmap *> photos_thumbnails;
for (int i=0; i< queue_size; ++i)
    {
        scene.addItem(Queue->photos_thumbnails.at(i));
    }
Не обижайтесь, но здесь каждая строка вызывает (справедливое) раздражение. Так Вы провоцируете ответы типа "учи язык", этого делать не стоит