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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Qt] проблема с обновлением изображения в графике  (Прочитано 3272 раз)
StepLg
Гость
« : Сентябрь 27, 2007, 14:23 »

Не могу разобраться, в чем проблема: есть класс, потомок QGraphicsItem, у него функция типа

Код:
void StarsBackGround::Generate()
{
    this->clear(); // функция просто удаляет все элементы из children()
    srand( (unsigned)time( NULL ) );
    for (int i=0; i<this->stars_number; ++i)
    {
        int rx = rand() % this->width + this->xpos;
        int ry = rand() % this->height + this->ypos;
        StarClass* s = new StarClass(this->starscolor);
        s->setPos(rx, ry);
        s->setParentItem(this);
    }
    this->update();
}



StarClass - тоже потомок QGraphicsItem

Дальше я делаю так:

Код:
QGraphicsScene *scene = new QGraphicsScene;
stars_back = new StarsBackGround(-width/2, -height/2, width, height);
stars_back->Generate();
scene->addItem(this->stars_back);



все отображается. но если где-то еще раз вызвать

Код:
stars_back->Generate();
scene->update(scene->sceneRect());


то при этом сцена действительно очищается от старых элементов, но новые на ней не отображаются! при том что генерируются, это точно. Как заставить scene действительно перерисовать изменившиеся элементы?

да, если при создании сцены и StarBackGround вызывать следующие функции в другом порядке:

Код:
scene->addItem(this->stars_back);
stars_back->Generate();


то тоже ничего не рисуется

Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #1 : Сентябрь 27, 2007, 20:30 »

а добавить новые элементы к сцене не забыл?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
StepLg
Гость
« Ответ #2 : Сентябрь 27, 2007, 21:08 »

а их нужно добавлять к сцене? То есть если у меня есть элемент А, добавленный к сцене, а к элементу А добавлен элемент В, то мне его нужно еще и к сцене прикрепить?

Но если так, то почему же в первом случае все работает, когда я прикрепляю сначала элемент В к элементу А, а потом А к сцене?

По-моему вместе с отображением самого элемента отображаются и все его дочерние..
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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