/
friendlyperch
/
QGrid
Обзор
Документация
Войти
/
friendlyperch
/
QGrid
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev-ver1
src/FilterableTableView.h
98 строк
3 KB
okuntsev
global search
15 янв 2026, 17:41
15 янв 2026, 17:41
9e56f6a
Код
Авторство
О чём код?
#ifndef FILTERABLETABLEVIEW_H #define FILTERABLETABLEVIEW_H #include "QGrid/GridCommon.h" #include <QTableView> #include <QVector> #include <QSet> class GridColumn; class UniversalTableModel; class FilterHeaderView; class UniversalDelegate; class ActiveListBase; class Group; class FilterProxyModel; class FilterableTableView : public QTableView { Q_OBJECT Q_PROPERTY(bool checkableSelectionEnabled READ getCheckableSelectionEnabled WRITE setCheckableSelectionEnabled NOTIFY checkableSelectionEnabledChanged) public: explicit FilterableTableView(QWidget *parent = nullptr); ~FilterableTableView(); void setColumns(const QVector<GridColumn *> &columns); QVector<GridColumn *> getColumns() const; void clearColumns(); void appendColumns(const QVector<GridColumn *> &newColumns); void appendColumn(GridColumn *column); void removeColumn(GridColumn *column); void removeAllColumns(); void setDatasource(ActiveListBase *datasource); ActiveListBase *getDatasource() const; Mode getMode() const; void setMode(const Mode &value); FilterHeaderView *getFilterHeader() const { return mFilterHeader; } UniversalTableModel *getTableModel() const { return mTableModel; } FilterProxyModel *getProxyModel() const { return mProxyModel; } QObject *getSelectedObject(); QVector<QObject *> getSelectedObjects() const; void setSearchBarShow(bool show); bool getSearchBarShow() const; bool getCheckableSelectionEnabled() const; void setCheckableSelectionEnabled(bool enabled); void setGlobalSearchFilter(const Group &filter); signals: void modeChanged(Mode); void filtersChanged(const Group &filters); void checkableSelectionEnabledChanged(bool enabled); protected: void showEvent(QShowEvent *event) override; private slots: void onFiltersChanged(const Group &filters); void onCheckboxToggled(const QModelIndex &index, bool checked); void updateAllSelections(); void updateRowSelection(int sourceRow, bool selected); void onRowCreated(size_t index); private: void hideColumns(); void updateCheckboxColumn(); int getCheckboxColumnIndex() const; private: UniversalTableModel *mTableModel = nullptr; FilterProxyModel *mProxyModel = nullptr; FilterHeaderView *mFilterHeader = nullptr; UniversalDelegate *mUniversalDelegate = nullptr; QVector<GridColumn *> mColumns; GridColumn *mCheckboxColumn = nullptr; Mode mMode = Mode::ReadWrite; bool mCheckableSelectionEnabled = false; QSet<int> mSelectedRows; Group *mGlobalSearchFilter = nullptr; }; #endif // FILTERABLETABLEVIEW_H