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 <QLineEdit>
|
||||
#include <QSortFilterProxyModel>
|
||||
#include <QVBoxLayout>
|
||||
#include <magic_enum.hpp>
|
||||
|
||||
|
@ -9,13 +11,26 @@ GearListWidget::GearListWidget(GameData* data, QWidget* parent) : data(data) {
|
|||
auto layout = new QVBoxLayout();
|
||||
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->setModel(model);
|
||||
listWidget->setModel(searchModel);
|
||||
|
||||
connect(listWidget, &QTreeView::clicked, [this, model](const QModelIndex& item) {
|
||||
if (auto gear = model->getGearFromIndex(item)) {
|
||||
connect(listWidget, &QTreeView::clicked, [this, searchModel, originalModel](const QModelIndex& item) {
|
||||
if (auto gear = originalModel->getGearFromIndex(searchModel->mapToSource(item))) {
|
||||
Q_EMIT gearSelected(*gear);
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Add table
Reference in a new issue