i'am пытается установить новый родителю QTreeWidgetItem, вот мой код:QTreeWidgetItem reparenting
1.if(it->parent())//'it' is QTreeWidgetItem
2. {
3. QTreeWidgetItem* parent = it->parent();
4. parent->takeChild(parent->indexOfChild(it));
5. }
7. under->addChild(it);//'under' is new parent of 'it'
После четвертой строки программа завершается с read access violation at 0x0
.
EDITED
Q_CHECK_PTR(under);
Q_CHECK_PTR(it);
if(it->parent())
{
QTreeWidgetItem* parent = it->parent();
Q_CHECK_PTR(parent);
Q_ASSERT(parent->child(parent->indexOfChild(it)) == it);
parent->removeChild(it);
//or
//it = new QTreeWidgetItem(*(parent->takeChild(parent->indexOfChild(it))));
//or
//it = parent->takeChild(parent->indexOfChild(it));
//or
//parent->takeChild(parent->indexOfChild(it));
}
Q_CHECK_PTR(under);
Q_CHECK_PTR(it);
under->addChild(it);
Тот же результат.
Отладчик, такой как GDB, скажет вам, что является нулевым и что не удалось. – Mezzo
Ничего нет, это проблема. он, под и родитель отлично работает, пока не возьмет или не удалит ребенка из родителя. –