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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Qt] проблема с обновлением изображения в графике  (Прочитано 3374 раз)
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.029 секунд. Запросов: 23.