这个比较简单!两个函数就可以搞定!
void paint(QPainter *painter,const QStyleOptionViewItem &option,const QModelIndex &index) const
bool editorEvent(QEvent *event,QAbstractItemModel *model,const QStyleOptionViewItem &option,const QModelIndex &index)
QStyledItemDelegate中paint事件绘制按钮时候有对应的rect1,rect2,rect3,在editorEvent事件判断event的类型,可以转化为QMouseEvent,可以获取mouseEvent->pos(),再进行判断
if (event->type() == QEvent::MouseButtonRelease)
{
QMouseEvent *mouseEvent = (QMouseEvent *)event;
if (mouseEvent->button() == Qt::LeftButton)
{
if (rect1.contains(mouseEvent->pos()))
emit button1Clicked(index);
else if (rect2.contains(mouseEvent->pos()))
emit button2Clicked(index);
else if (rect3.contains(mouseEvent->pos()))
emit button3Clicked(index);
}
}
在外部连接对应的槽就OK了!