通过自定义delegate,实现根据鼠标状态对添加的自定义控件显示不同图标
先上效果图
首先需要重写 editorEvent 在其中判断鼠标状态 并将状态值存入 QModelIndex
bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option, const QModelIndex &index)
{
//button的rect
QRect rect = calculate_btn_rect(option.rect);
//按钮点击事件
QMouseEvent *mevent = static_cast<QMouseEvent*>(event);
if(rect.contains(mevent->pos())){
if(event->type() == QEvent::MouseButtonPress)
{
model->setData(index, event->type(), Qt::UserRole + 1);//将鼠标事件类型存入index
model->dataChanged(index, index);
}else if (event->type() == QEvent::Mou