Удаление елементов из QListWidget

132
28 апреля 2019, 16:00

Доброго времени суток.

Мне нужно как-то удалять елементы из QListWidget при нажатии на кнопку в добавляемом виджете.

Добавляемые виджеты выглядят вот так:

Добавляю такие виджеты вот таким вот способом:

//mainwindow.cpp
void MainWindow::on_addPlotButton_clicked() {
  QListWidgetItem *item = new QListWidgetItem(this->ui->plotInfoList);
  this->ui->plotInfoList->addItem (item);
  PlotInfoWidget *theItem = new PlotInfoWidget;
  item->setSizeHint (theItem->sizeHint ());
  this->ui->plotInfoList->setItemWidget (item, theItem);
}

Пытался удалять при нажатии на кнопку минус(скриншот) вот таким вот способом:

//plotinfowidget.cpp
void PlotInfoWidget::on_deleteButton_clicked()
{
    delete this;
}

Но при попытке добавить после этого новый елемент выдаёт такую ошибку

Можно добавить еще одну кнопку и удалять выбраные мышкой елементы, но хотелось бы чтоб они удалялись при помощи кнопки на самом виджете.

Прошу вашей помощи в реализации или подбрасывании идей, в Qt начал розбираться недавно так что хотелось бы получить максимально(насколько возможно) розвёрнутый ответ.

Answer 1

Ну, delete this вызывать нельзя никогда: как объект может удалить сам себя, если он в момент вызова занят работой одного из методов, в котором встретился такой вызов? Поэтому и Segmentation Fault. Удаление элементов из QListWidget делается так:

int deletee = ... // найти номер элемента для удаления
delete ui->listWidget->takeItem(deletee);
READ ALSO
Техника pimpl c++

Техника pimpl c++

Что такое техника pimpl и когда нужно её использовать?

151
Поиск значения в std::vector

Поиск значения в std::vector

Я создал следующую структуру

142
Удаление строк в QTableView

Удаление строк в QTableView

Столкнулся с одной проблемойУ меня есть таблица, в которой по нажатию кнопок можно добавлять, вставлять между существующих строк и удалять...

199
Перехват данных из USB-HID картридера

Перехват данных из USB-HID картридера

Есть картридер для чтения карт с магнитной полосойОперационная система его "задействует" как клавиатуру

145