РР
June 4, 2019, 10:14 p.m.

Самоуничтожение объектов на графической сцене

Qt, qt, QGraphicItem, QGraphicsScene

Мне нужно чтобы созданные объекты сами по себе удалялись со сцены, по таймеру. То есть без взаимодействия с ними. Как это можно реализовать? Есть код для удаления с взаимодействием (приложен), а вот как сделать чтобы без - ничего не могу придумать.

  1. void Widget::slotDeletePeel(QGraphicsItem *item)
  2. {
  3. foreach (QGraphicsItem *peel, peels)
  4. {
  5. if(peel==item)
  6. {
  7. scene->removeItem(peel);
  8. peels.removeOne(peel);
  9. delete peel;
  10. ui->lcdNumber->display(count--);
  11. }
  12. }
  13. }
2

Do you like it? Share on social networks!

1
Evgenii Legotckoi
  • June 5, 2019, 1:51 p.m.

Вам бы наследоваться от QObject дополнительно, добавить в ваш класс QTimer. Можно создать его на стеке, просто объявив в заголовочном файле так

  1. QTimer m_timer;

также добавить сигнал

  1. void deleteMe(QGraphicsItem* item);

Подключить этот сигнал к сигналу от таймера

  1. connect(&m_timer, &QTimer::timeout, this, [this](){ emit deleteMe(this)});

Запустить данный таймер тогда, когда вам потребуется

  1. m_timer.start();

А когда создаёте объект вашего класса QGraphicsItem, то сразу подключайте этот сигнал deleteMe к вашему методу для уничтожения объектов slotDeletePeel .

Пример наследование от QGraphicsItem и QObject есть в этой статье , либо можете сразу использовать QGraphicsObject

    Comments

    Only authorized users can post comments.
    Please, Log in or Sign up
    • Last comments
    • Evgenii Legotckoi
      March 9, 2025, 9:02 p.m.
      К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
    • VP
      March 9, 2025, 4:14 p.m.
      Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
    • ИМ
      Nov. 22, 2024, 9:51 p.m.
      Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
    • Evgenii Legotckoi
      Oct. 31, 2024, 11:37 p.m.
      Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
    • A
      Oct. 19, 2024, 5:19 p.m.
      Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html