Название: [решено] Удаление в слоте объекта его вызвавшего Отправлено: serg_hd от Май 18, 2011, 12:48 Всем привет, вопрос в том, как удалить в слоте объект который его, этот слот, и вызвал. Собственно есть qtableview, в каждой строке которой есть кнопка удаления этой строки. По нажатию кнопки строка должна удалиться (на самом деле обновляется модель, но в которой уже отсутствует эта строка). На данный момент она не удаляется, зато есть segfault (кнопка видимо затирается раньше чем надо). Точнее он есть в версии Qt 4.7.3, а в 4.7.2 всё, как ни странно, ок (если юзать в слоте qmessagebox перед действием обновления модели) - поэтому баг обнаружил только при тестировании на более новой версии кьюта. Короче, идею надо переделать...
Метод добавления кнопки в каждый ряд вьюхи: Код
Слот удаления строки (обновления модели): Код
Наглядный пример на всякий случай прикрепил. Название: Re: Удаление в слоте объекта его вызвавшего Отправлено: Пантер от Май 18, 2011, 12:53 deleteLater
Название: Re: Удаление в слоте объекта его вызвавшего Отправлено: serg_hd от Май 18, 2011, 12:53 пробовал, не помогает. disconnect() для sender'а тоже. Проблема в том, что не я удаляю руками в коде кнопку, а qtableview это делает сама в тот момент когда обновляется модель. И проблема именно в кнопке, т.к. если прицепить слот к другой кнопке, которая не относится к qtableview, то всё ок, нужная строка затирается вместе с кнопкой удаления без проблем.
Название: Re: Удаление в слоте объекта его вызвавшего Отправлено: serg_hd от Май 18, 2011, 12:58 Причём виджет с кнопкой (виджет, а в нём кнопка - это для того, чтоб её можно было выровнять по центру ячейки) создан в куче и неважно какого родителя ему ставить - вьюху или нет, всё равно segfault.
Название: Re: Удаление в слоте объекта его вызвавшего Отправлено: GreatSnake от Май 18, 2011, 13:16 Может для таких дел использовать QItemEditorFactory?
Название: [решено] Удаление в слоте объекта его вызвавшего Отправлено: serg_hd от Май 18, 2011, 13:53 добавил
Код в слот удаления строки, помогло :) Видимо, qtableview как-то по-своему чистит этот виджет. Название: Re: [решено] Удаление в слоте объекта его вызвавшего Отправлено: GreatSnake от Май 18, 2011, 14:02 Интересно, а какой смысл в "базе" с лейаутом для одной кнопки?
Название: Re: [решено] Удаление в слоте объекта его вызвавшего Отправлено: serg_hd от Май 18, 2011, 14:03 чтобы можно было её выровнять по центру ячейки. По умолчанию она становится слева.
|