crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Как удалить item из QListWidget, по нажатию кнопки в нем.
RazrFalcon
  опции профиля:
сообщение 3.8.2011, 10:24
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Есть QListWidget, в каждый элемент вставлен виджет. setItemWidget();
Сам виджет - класс наследник от QWidget.
На каждом виджете расположена кнопка закрыть.

Как по нажатию этой кнопки (закрытьС) удалить итем QListWidget'а, содержащий этот вижет.

В самом виджете я вызываю deleteLater(); и он удаляется. но остается просто пустой QListWidgetItem.
Как узнать какой необходимо удалить?

Пример:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 3.8.2011, 12:27
Сообщение #2


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Я когда то делал так (только у меня таблица была):

1. для каждой кнопки в свойствах указывал номер строки за которую он отвечает
    QToolButton *delete_button = new QToolButton();
    delete_button->setProperty("row", row);
    table->setCellWidget(row,4, delete_button);
    connect(delete_button, SIGNAL(clicked()), SLOT(queryDeleteProfileMulticast()));

2. в слоте узнавал какая кнопка нажата и за какую строку она отвечает
void CgcParamTab::queryDeleteProfileMulticast()
{
    QToolButton *button = qobject_cast<QToolButton *>(sender());
    if(!button) return;

    bool ok = false;
    int row = button->property("row").toInt(&ok);
    if(!ok) return;

3. удалял нужную строку
    table->removeRow(row);

4. переназначал свойство для оставшихся кнопок
for (........) {
        toolButton = table->cellWidget(row, 4);
        if (toolButton!=0) toolButton->setProperty("row", row);
}

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 3.8.2011, 13:00
Сообщение #3


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Спасибо. То что нужно.
У меня все было точно также, разве что в классе-наследнике я не кнопке setProperty() делал, а просто переменную завел.
Моя ошибка была в том, что я не переназначал индексы. И после каждого удаления они сбивались конечно же, и получалось черти что :lol:

Сообщение отредактировал RazrFalcon - 3.8.2011, 13:00
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 17.1.2021, 19:17