问:如何在QTableView中选择鼠标下的单词

时间:2014-12-04 17:38:27

标签: c++ qt qtableview

我有一个QTableView,我想突出显示当前鼠标指针下的实际单词 那我怎么能找到这个词呢?

void LogItemDelegate::paint(QPainter *painter,
    const QStyleOptionViewItem &option,
    const QModelIndex &index) const
{
    QString text = index.model()->data(index, Qt::DisplayRole).toString();
    // so how can i find the word under the mousepointer
}

1 个答案:

答案 0 :(得分:0)

试试这个:

    QString text = index.model()->data(index, Qt::DisplayRole).toString();
    if(option.state & QStyle::State_MouseOver)
    {
        painter->setPen(Qt::blue);
        painter->drawText(option.rect,text);
    }
    else
    {
        QStyledItemDelegate::paint(painter,option,index);
    }

你也可以尝试:

painter->drawText(option.rect.adjusted(3, 7, 0, 0),txt);

以获得更好的视觉表现。

但我可以预测这不起作用。为什么?您应该允许鼠标跟踪,所以只需添加:

ui->tableView->setMouseTracking(true);
ui->tableView->setItemDelegate(new LogItemDelegate);