МЛ
25 березня 2022 р. 17:34

QList удаление элементов

  1. QList<MyClass*> list;
  2. MyClass* a = new MyClass();
  3. list.append(a);
  4. list.clear();

Удалится ли элемент списка или только ссылка на него из списка.
Нужно ли при очищении списка отдельно удалять элементы через delete a;

4

Вам це подобається? Поділіться в соціальних мережах!

3
Виктор Калесников
  • 25 березня 2022 р. 18:06
  • (відредаговано)

list.clear() - очистит только указатели.
Два варианта:
1) list.at(i)->deleteLater(); // удалять обьект класса через итератор Qlist как вы и предположили.
2) QList ().swap(list); // есть в официальной документации. https://doc.qt.io/qt-6/qlist.html#clear

    Виктор Калесников
    • 25 березня 2022 р. 18:27

    У меня были похожие вопросы в работе с QByteArray.
    Qt максимально возможно избегает реализации функций применяющих глубокое копирование. Это вызывает неожиданные результаты при присваивании, удалении, создании объектов и тд.

    И с QList ().swap(list); так же не все понятно из доков. Нужно смотреть по факту.

      glum_psyche
      • 25 березня 2022 р. 23:05

      Также можно применить qDeleteAll()

      Подробнее тут

        Коментарі

        Only authorized users can post comments.
        Please, Log in or Sign up
        • Останні коментарі
        • Evgenii Legotckoi
          16 квітня 2025 р. 17:08
          Благодарю за отзыв. И вам желаю всяческих успехов!
        • IscanderChe
          12 квітня 2025 р. 17:12
          Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
        • AK
          01 квітня 2025 р. 11:41
          Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
        • Evgenii Legotckoi
          09 березня 2025 р. 21:02
          К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
        • VP
          09 березня 2025 р. 16:14
          Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…