mirror of
https://github.com/redstrate/Novus.git
synced 2025-06-08 14:17:45 +00:00
Add search box to gear list widget
This commit is contained in:
parent
10996a7f5a
commit
99ea8585d0
1 changed files with 19 additions and 4 deletions
|
@ -1,5 +1,7 @@
|
||||||
#include "gearlistwidget.h"
|
#include "gearlistwidget.h"
|
||||||
|
|
||||||
|
#include <QLineEdit>
|
||||||
|
#include <QSortFilterProxyModel>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
#include <magic_enum.hpp>
|
#include <magic_enum.hpp>
|
||||||
|
|
||||||
|
@ -9,13 +11,26 @@ GearListWidget::GearListWidget(GameData* data, QWidget* parent) : data(data) {
|
||||||
auto layout = new QVBoxLayout();
|
auto layout = new QVBoxLayout();
|
||||||
setLayout(layout);
|
setLayout(layout);
|
||||||
|
|
||||||
auto model = new GearListModel(data);
|
auto searchModel = new QSortFilterProxyModel();
|
||||||
|
searchModel->setRecursiveFilteringEnabled(true);
|
||||||
|
searchModel->setFilterCaseSensitivity(Qt::CaseSensitivity::CaseInsensitive);
|
||||||
|
|
||||||
|
auto searchEdit = new QLineEdit();
|
||||||
|
searchEdit->setPlaceholderText("Search...");
|
||||||
|
searchEdit->setClearButtonEnabled(true);
|
||||||
|
connect(searchEdit, &QLineEdit::textChanged, this, [=](const QString& text) {
|
||||||
|
searchModel->setFilterRegularExpression(text);
|
||||||
|
});
|
||||||
|
layout->addWidget(searchEdit);
|
||||||
|
|
||||||
|
auto originalModel = new GearListModel(data);
|
||||||
|
searchModel->setSourceModel(originalModel);
|
||||||
|
|
||||||
listWidget = new QTreeView();
|
listWidget = new QTreeView();
|
||||||
listWidget->setModel(model);
|
listWidget->setModel(searchModel);
|
||||||
|
|
||||||
connect(listWidget, &QTreeView::clicked, [this, model](const QModelIndex& item) {
|
connect(listWidget, &QTreeView::clicked, [this, searchModel, originalModel](const QModelIndex& item) {
|
||||||
if (auto gear = model->getGearFromIndex(item)) {
|
if (auto gear = originalModel->getGearFromIndex(searchModel->mapToSource(item))) {
|
||||||
Q_EMIT gearSelected(*gear);
|
Q_EMIT gearSelected(*gear);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Reference in a new issue