PowerModeler/source/tableWidgetHoverDelegate.cpp

48 lines
1.8 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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);
}
}