Seite 1 von 1

[solved] Problem mit QAbstractItemModel für QTreeView

Verfasst: 16. April 2008 16:25
von ConfusedSushi
hallo,

ich schlag mich grad mit einem problem rum dessen fehler ich einfach nicht finde, ich hoffe ihr könnt mir helfen.

und zwar meldet sich der treeview mit einer assertion an der stelle

Code: Alles auswählen

    while (parent != root) {
        Q_ASSERT(i > -1);                                  // <<-- hier
        viewItems[i].total += count - hidden;
        parent = parent.parent();
        i = viewIndex(parent);
    }
in dem rc1 von qt 4.4 sind das die zeilen 3012 bis 3017 in der qtreeview.cpp.

die verwendung des modeltesters gibt mir folgende assertion:

Code: Alles auswählen

            // Check that we can get back our real parent.
            Q_ASSERT(model->parent(index) == parent);
meine parent methode sieht folgendermaßen aus:

Code: Alles auswählen

QModelIndex Model::parent(const QModelIndex & index) const
{
	if(!index.isValid())
		return QModelIndex();

	const Nodes::Node * node
		= qobject_cast<const Nodes::Node *>(
			reinterpret_cast<const QObject *>(index.internalPointer()));

	ASSERT(node != NULL);

	if(node->type() == Nodes::Node::RootNode)
		return QModelIndex();

	int parentRow;

	ASSERT(node->parentNode() != NULL);

	parentRow = node->parentNode()->indexOfNode(node);

	ASSERT(parentRow >= 0);
	ASSERT(parentRow < node->parentNode()->nodeCount());

	return createIndex(parentRow, 0, node->parentNode());
}
danke im voraus.

Verfasst: 16. April 2008 16:49
von ConfusedSushi
es darf nicht wahr sein :twisted:
seit drei tagen such ich diesen fehler und jetzt hab ich ihn

Code: Alles auswählen

parentRow = node->parentNode()->indexOfNode(node);
natürlich muss ich an der stelle das parent fragen und ich die aktuelle node, also in etwa so

Code: Alles auswählen

parentRow = parent->parentNode()->indexOfNode(parent);
ich danke für die hilfe :lol: