[solved] Problem mit QAbstractItemModel für QTreeView

Alles rund um die Programmierung mit Qt
Antworten
ConfusedSushi
Beiträge: 57
Registriert: 18. Januar 2008 16:46
Wohnort: Berlin

[solved] Problem mit QAbstractItemModel für QTreeView

Beitrag 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.
Zuletzt geändert von ConfusedSushi am 16. April 2008 16:49, insgesamt 1-mal geändert.
ConfusedSushi
Beiträge: 57
Registriert: 18. Januar 2008 16:46
Wohnort: Berlin

Beitrag 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:
Antworten