我正在使用C ++ Qt5。目前,我有一个QStandardItemModel显示为具有多个行和列的QTreeView。我知道使用setStyleSheet(),但这似乎只是改变了行的颜色。我要寻找的是当鼠标悬停在一行上时,会调用一个函数,然后我可以使用该函数来操纵游戏。
答案 0 :(得分:2)
您可以使用委托(http://doc.qt.io/qt-5/qtwidgets-itemviews-stardelegate-example.html)和QStyle :: State_MouseOver来检查是否将鼠标悬停在一行上。 您应该覆盖 paint 方法。
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const {
if(index.row() == 2 && (option.state & QStyle::State_MouseOver)) {
painter->fillRect(option.rect, Qt::blue);
} else {
QStyledItemDelegate::paint(painter, option, index);
}
}