buttondelegate.h 982 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #ifndef BUTTONDELEGATE_H
  2. #define BUTTONDELEGATE_H
  3. #include <QAbstractItemModel>
  4. #include <QApplication>
  5. #include <QDebug>
  6. #include <QHBoxLayout>
  7. #include <QModelIndex>
  8. #include <QMouseEvent>
  9. #include <QPainter>
  10. #include <QPushButton>
  11. #include <QStyleOptionButton>
  12. #include <QStyleOptionViewItem>
  13. #include <QStyledItemDelegate>
  14. #include <QTableView>
  15. #include <QWidget>
  16. class ButtonDelegate : public QStyledItemDelegate {
  17. Q_OBJECT
  18. public:
  19. explicit ButtonDelegate(int buttonColumn, QObject *parent = nullptr);
  20. void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
  21. bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option,
  22. const QModelIndex &index) override;
  23. void handleButtonClick(int row, int button);
  24. private:
  25. int buttonColumn; // 成员变量
  26. signals:
  27. void buttonClicked(int row, int button);
  28. };
  29. #endif // BUTTONDELEGATE_H