Есть QListWidget, в каждый элемент вставлен виджет. setItemWidget();
Сам виджет - класс наследник от QWidget.
На каждом виджете расположена кнопка закрыть.
Как по нажатию этой кнопки (закрытьС) удалить итем QListWidget'а, содержащий этот вижет.
В самом виджете я вызываю deleteLater(); и он удаляется. но остается просто пустой QListWidgetItem.
Как узнать какой необходимо удалить?
Пример:
http://itmages.ru/image/view/247304/5cef6b29
Я когда то делал так (только у меня таблица была):
1. для каждой кнопки в свойствах указывал номер строки за которую он отвечает
QToolButton *delete_button = new QToolButton();
delete_button->setProperty("row", row);
table->setCellWidget(row,4, delete_button);
connect(delete_button, SIGNAL(clicked()), SLOT(queryDeleteProfileMulticast()));
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;
table->removeRow(row);
for (........) {
toolButton = table->cellWidget(row, 4);
if (toolButton!=0) toolButton->setProperty("row", row);
}
Спасибо. То что нужно.
У меня все было точно также, разве что в классе-наследнике я не кнопке setProperty() делал, а просто переменную завел.
Моя ошибка была в том, что я не переназначал индексы. И после каждого удаления они сбивались конечно же, и получалось черти что
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)