#pragma once #include #include class QAbstractTableModel; class QTableView; class QHBoxLayout; namespace chatterino { class EditableModelView : public QWidget { public: EditableModelView(QAbstractTableModel *model, bool movable = true); void setTitles(std::initializer_list titles); void setValidationRegexp(QRegularExpression regexp); QTableView *getTableView(); QAbstractTableModel *getModel(); pajlada::Signals::NoArgSignal addButtonPressed; void addCustomButton(QWidget *widget); void addRegexHelpLink(); private: QTableView *tableView_{}; QAbstractTableModel *model_{}; QHBoxLayout *buttons_{}; void moveRow(int dir); public: void selectRow(int row); }; } // namespace chatterino