I have tree widget and i want to filter, a certain kind of child
I wrote the following slot that gets triggered whenever the contents of the lineedit eBrowseFilter changes:
void QMyClass::refilterBrowseTree()
{
bool hide = true;
QObjectList children = browseTree->children();
browseTree->setUpdatesEnabled(false);
for (int i = 0; i < children.count(); ++i)
{
hide = false;
if (c->type()==1000)
{
if (!c->text(0).contains(eBrowseFilter->text()))
hide = true;
}
c->setHidden(hide);
}
browseTree->setUpdatesEnabled(true);
browseTree->update();
}
void QMyClass::refilterBrowseTree()
{
bool hide = true;
QTreeWidgetItem *c = 0;
QObjectList children = browseTree->children();
browseTree->setUpdatesEnabled(false);
for (int i = 0; i < children.count(); ++i)
{
c = (QTreeWidgetItem*)children.at(i);
hide = false;
if (c->type()==1000)
{
if (!c->text(0).contains(eBrowseFilter->text()))
hide = true;
}
c->setHidden(hide);
}
browseTree->setUpdatesEnabled(true);
browseTree->update();
}
To copy to clipboard, switch view to plain text mode
The Program segfaults as soon as I enter something into eBrowseFilter... The Backtrace tells me it actually failed in QTreeWidget::setItemHidden()...
How can that be? Whats wrong?
Thanks for your help!
Disclaimer:
I know Qt4 has this great model-view-thing, but I personally think it rather inconvenient, since QTreeWidget doesnt allow me to setModel (its private), and reimplementing all the Item-based features for QTreeView looks like a lot of work (after all I am really happy with QTreeWidget, i just want to do some filtering).
Bookmarks