QTreeView, как вызвать действие при наведении курсора мыши на строку? - PullRequest
0 голосов
/ 23 ноября 2018

Я использую C ++ Qt5.В настоящее время у меня QStandardItemModel отображается как QTreeView с несколькими строками и столбцами.Я знаю об использовании setStyleSheet (), но это, кажется, просто меняет цвет строки.Что я ищу, так это когда мышь наводит курсор на строку, вызывается функция, которую я затем могу использовать для управления своей игрой.

1 Ответ

0 голосов
/ 26 ноября 2018

Вы можете использовать делегат (http://doc.qt.io/qt-5/qtwidgets-itemviews-stardelegate-example.html) и QStyle :: State_MouseOver, чтобы проверить, наведена ли мышь на строку. Вы должны переопределить рисовать метод.

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