#ifndef BUTTONDELEGATE_H #define BUTTONDELEGATE_H #include "basedelegate.h" #include struct stButtonInfo { QString strText; int nWidth; int nHeight; }; /// /// 为指定列设置按钮代理 /// class ButtonDelegate : public BaseDelegate { Q_OBJECT public: explicit ButtonDelegate(QObject *parent = nullptr); void CreateButton(int nCol, QString strBtnText, int nBtnWidth, int nBtnHeight); public: void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override; bool editorEvent(QEvent* event, QAbstractItemModel* model, const QStyleOptionViewItem& option, const QModelIndex& index) override; signals: // 发出带有被点击的QModelIndex和按钮索引的信号 void SignalButtonClicked(const QModelIndex &index, int nBtnIndex) const; private: QMap> m_mapBtnInfo; }; #endif // BUTTONDELEGATE_H