Я проверяю пример примера Qt Spin Box Delegate. В примереКак Qt управляет памятью указателя виджета, который возвращается из функции QItemDelegate :: createEditor()
QWidget *SpinBoxDelegate::createEditor(QWidget *parent,
const QStyleOptionViewItem &/* option */,
const QModelIndex &/* index */) const
{
QSpinBox *editor = new QSpinBox(parent);
...
return editor;
}
Как удалить редактор указателей на более позднем этапе? Является ли удаление выполняемым деструктором QItemDelegate? Но деструктор QItemDelegate не является виртуальным. Кто-нибудь может помочь мне объяснить, как это работает?
Я не могу поставить точку останова в QtCreator. Как я понимаю, каждый раз, когда вызывается виртуальная функция createEditor(), будет выделена новая ячейка памяти, а код клиента потеряет указатель в конце функции. Документ Qt о createEditor() не объясняет. Но я думаю, что каждая ячейка в tableView будет иметь редактор, верно?
Мне действительно интересно, как Qt удаляет эти указатели QWidget.
Благодаря