48 lines
1.8 KiB
C++
48 lines
1.8 KiB
C++
#include "tableWidgetHoverDelegate.h"
|
||
#include <QPainter>
|
||
|
||
QTableWidgetHoverDelegate::QTableWidgetHoverDelegate(QTableWidget *parent)
|
||
: QStyledItemDelegate{parent}
|
||
{
|
||
m_tableWiget = parent;
|
||
}
|
||
|
||
QTableWidgetHoverDelegate::~QTableWidgetHoverDelegate()
|
||
{}
|
||
|
||
void QTableWidgetHoverDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
|
||
{
|
||
if(option.state.testFlag(QStyle::State_MouseOver) && m_tableWiget)
|
||
{
|
||
QTableWidgetItem* hoveredItem = m_tableWiget->item(index.row(), index.column());
|
||
if(hoveredItem)
|
||
{
|
||
int row = index.row();
|
||
for(int column = 0; column < m_tableWiget->columnCount(); column++)
|
||
{
|
||
QTableWidgetItem* item = m_tableWiget->item(row, column);
|
||
if(!item)
|
||
continue;
|
||
|
||
QModelIndex index = m_tableWiget->model()->index(row, column);
|
||
QStyleOptionViewItem itemOption = option;
|
||
itemOption.rect = m_tableWiget->visualItemRect(item);
|
||
QStyledItemDelegate::paint(painter, itemOption, index);
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
/*int row = index.row();
|
||
int col = index.column();
|
||
QTableWidgetItem* item = m_tableWiget->item(row, col);
|
||
QRect rect = m_tableWiget->visualItemRect(item);
|
||
//qDebug() << row << ", " << col << " optionRect:" << option.rect << " visualItemRect:" << rect;
|
||
painter->save();
|
||
painter->setPen(Qt::red);
|
||
painter->drawLine(rect.x(), rect.y() + rect.height()*0.5, rect.x() + rect.width(), rect.y() + rect.height()*0.5); //painter属于view,所以要以view的坐标系为标准
|
||
painter->restore();*/
|
||
QStyledItemDelegate::paint(painter, option, index);
|
||
}
|
||
}
|