Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Модель/Представление _ Не удаляется элемент из QListWidget

Автор: Andrewshkovskii 20.12.2010, 19:20

Ситуация : есть выбранный элемент. необходимо его по клику удалить.
пытаюсь вот так :

ui->parametersList->removeItemWidget(ui->parametersList->item(ui->parametersList->currentRow()));

- не получилось.
Пытался удалять получая указатель на выбранный элемент с помощью selectedItems - тоже самое, ничего не удаляется...
Как быть ?

Быстрое решение :
qDeleteAll(ui->parametersList->selectedItems());

Есть ли у кого альтернатива и догадка того, почему не удаляется первым способом?
Есть ещё вариант с takeItem, но это не совсем "то"...

Автор: Алексей1153 20.12.2010, 23:55

Andrewshkovskii, если удаляется элемент, покладенный через визард, то отправь сигнал и в обработчике добавь сендера в очередь на убийство. В таймере очередь обрабатывай

если элемент создан вручную, то тут своя логика, зависящая от устройства хранения контролов

Автор: Andrewshkovskii 21.12.2010, 0:38

Алексей, я Вас не совсем понял. Элементы добавлены в виджет в "ручную", через код. Я то пофиксил проблему, но мне интересно, почему не работал первый вариант.

Автор: igor_bogomolov 21.12.2010, 1:03

Цитата(Andrewshkovskii @ 20.12.2010, 19:20) *
Есть ещё вариант с takeItem, но это не совсем "то"...
Почему не то? Я часто так делаю delete takeItem(...);

Автор: Andrewshkovskii 21.12.2010, 1:52

Ну получается так : "забрать элемент, удалить элемент", странно, что приходиться делать так, когда есть "родные" методы QListWidget для удаления указанный/выделенных элементов.

Автор: igor_bogomolov 21.12.2010, 2:10

Andrewshkovskii, о каких родных методах вы говорите? Я таких методов не знаю. Единственный такой метод, это тот что я привёл выше, т.е. takeItem. Но он удаляет итем из модели, не удаляя сам итем. Поэтому приходится его удалять ручками.

Если же нужно удалить именно выделенные элементы, то лучше делать так как написали во втором примере

qDeleteAll(ui->parametersList->selectedItems());

removeItemWidget делает совсем не то. Он удаляет виджет установленный для итема.

Автор: Andrewshkovskii 21.12.2010, 2:11

Аааа..спасибо, а то я никак вникнуть не мог!:)

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)