wfview/include/tablewidget.h

114 lines
3 KiB
C
Raw Permalink Normal View History

2023-04-19 14:51:23 +01:00
#ifndef TABLEWIDGET_H
#define TABLEWIDGET_H
#include <QTableWidget>
#include <QMenu>
#include <QMouseEvent>
#include <QItemDelegate>
#include <QComboBox>
2025-01-14 13:35:14 +00:00
#include <QSortFilterProxyModel>
#include <QCompleter>
#include <QValidator>
2023-04-19 14:51:23 +01:00
#include <QCheckBox>
2023-05-01 21:56:52 +01:00
#include <QRegularExpression>
2023-05-02 21:18:41 +01:00
#include <QLineEdit>
#include <QRegularExpressionValidator>
#include <QRegularExpression>
2023-04-19 14:51:23 +01:00
class tableWidget : public QTableWidget
{
2023-05-01 21:56:52 +01:00
Q_OBJECT
2023-04-19 14:51:23 +01:00
public:
2023-05-01 21:56:52 +01:00
explicit tableWidget(QWidget* parent = 0);
void editing(bool val) { editingEnabled = val; };
void addAction(QAction* action) { menuActions.append(action); }
2023-05-01 21:56:52 +01:00
2026-04-03 12:01:47 -07:00
public slots:
void addItem();
void insertItem();
void cloneItem();
void deleteItem();
2023-05-01 21:56:52 +01:00
signals:
void rowAdded(int row);
2025-02-03 20:20:40 +00:00
void rowDeleted(int num);
void rowValDeleted(quint32 num);
void menuAction(QAction* action, quint32 num);
2023-04-19 14:51:23 +01:00
protected:
void mouseReleaseEvent(QMouseEvent *event);
bool editingEnabled = true;
QList<QAction*> menuActions;
2023-04-19 14:51:23 +01:00
};
2023-05-02 21:18:41 +01:00
class tableEditor : public QItemDelegate
{
Q_OBJECT
public:
2023-05-09 12:11:38 +01:00
explicit tableEditor(QString validExp = "", QObject *parent = 0);
2023-05-02 21:18:41 +01:00
QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
mutable QLineEdit *edit;
2023-05-09 12:11:38 +01:00
QString validExp;
2023-05-02 21:18:41 +01:00
};
2023-04-19 14:51:23 +01:00
class tableCombobox : public QItemDelegate
{
2023-05-01 21:56:52 +01:00
Q_OBJECT
2023-04-19 14:51:23 +01:00
public:
2023-04-23 21:29:44 +01:00
explicit tableCombobox(QAbstractItemModel* model, bool sort=false, QObject *parent = 0);
2023-04-19 14:51:23 +01:00
QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
void setEditorData(QWidget *combo, const QModelIndex &index) const override;
void setModelData(QWidget *combo, QAbstractItemModel *model, const QModelIndex &index) const override;
void updateEditorGeometry(QWidget *combo, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
2023-05-01 21:56:52 +01:00
mutable QComboBox *combo;
private slots:
2023-05-02 21:18:41 +01:00
void setData(int val);
2023-05-01 21:56:52 +01:00
2023-04-19 14:51:23 +01:00
private:
QAbstractItemModel* modelData;
};
2023-05-02 21:18:41 +01:00
2025-01-14 13:35:14 +00:00
class comboValidator : public QValidator
{
Q_OBJECT
public:
explicit comboValidator(QComboBox* combo, QObject *parent = nullptr)
: QValidator(parent), combo(combo){};
virtual QValidator::State validate ( QString & input, int & pos ) const override
{
Q_UNUSED(pos)
if (combo->findText(input, Qt::MatchContains) > -1)
return Acceptable;
//input=combo->currentText();
return Invalid;
}
private:
QComboBox* combo;
};
2023-04-19 14:51:23 +01:00
class tableCheckbox : public QItemDelegate
{
2023-05-01 21:56:52 +01:00
Q_OBJECT
2023-04-19 14:51:23 +01:00
public:
explicit tableCheckbox(QObject *parent = 0);
QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
void setEditorData(QWidget *combo, const QModelIndex &index) const override;
void setModelData(QWidget *combo, QAbstractItemModel *model, const QModelIndex &index) const override;
void updateEditorGeometry(QWidget *combo, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
};
#endif // TABLEWIDGET_H