25 #include <QItemEditorFactory>
30 #include <QVBoxLayout>
38 QComboBox(parent), skipNextHide(false)
42 treeView->setHeaderHidden(
true);
43 treeView->setModel(model);
44 treeView->setMinimumHeight(300);
45 treeView->setMinimumWidth(250);
46 treeView->setAnimated(
true);
47 treeView->setSortingEnabled(
true);
49 setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLength);
50 setMinimumContentsLength(10);
54 view()->viewport()->installEventFilter(
this);
60 if (event->type() == QEvent::MouseButtonPress &&
object == view()->viewport())
62 QMouseEvent* mouseEvent =
static_cast<QMouseEvent*
>(event);
63 QModelIndex
index = view()->indexAt(mouseEvent->pos());
76 else if ((event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease) &&
77 object == view()->viewport())
80 QKeyEvent* keyEvent =
static_cast<QKeyEvent*
>(event);
82 if (keyEvent->key() != Qt::Key_Return && keyEvent->key() != Qt::Key_Enter)
95 QComboBox::showPopup();
103 skipNextHide =
false;
107 if (treeView->isVisible())
113 delayedIndexChanging()));
116 QComboBox::hidePopup();
126 StateItemModel* stateModel = qobject_cast<StateItemModel*>(model());
133 QStandardItem* root = stateModel->invisibleRootItem();
141 treeView->setRowHidden(0, root->index(),
false);
143 if (searchString.length() > 0)
145 treeView->expandAll();
150 TreeBox::delayedIndexChanging()
160 for (
int row = 0; row < parent->rowCount(); ++row)
162 QStandardItem* child = parent->child(row);
169 bool showThisRow =
applyFilter(child, searchString);
170 QRegExp rex(searchString, Qt::CaseInsensitive, QRegExp::Wildcard);
172 if (child->data(Qt::DisplayRole).toString().contains(rex))
183 treeView->setRowHidden(row, parent->index(), !showThisRow);