2014-12-04 1 views
1

У меня есть QTableView, и я хочу выделить текущее слово под текущим указателем мыши , так как я могу найти это слово?Qt как я могу выбрать слово под мышью в 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 
} 

ответ

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); 
+0

MHH я думаю, что это будет выделить весь текст не только слово под , а также я хотел бы иметь текст сам для дальнейшего использования – helmi

+0

@helmi да, это будет выделить весь текст в ячейке. Невозможно сделать это легко и безболезненно для системы. Я думаю, что поиск этого слова (если есть возможность сделать это вообще) сделает ваше приложение очень дорогостоящим для системы. Все время приложение будет проверять каждую перемещение мыши и выполнять сложные вычисления, чтобы получить это слово, поэтому постарайтесь использовать мой ответ. Если кто-то опубликует здесь полное решение, я обязательно удалю свой ответ. Но теперь я думаю, что мой подход является наиболее подходящим. – Chernobyl

+0

спасибо, но thats not usebale для меня, поэтому мне нужно настоящее слово, может быть, только когда я нажму на него, что было бы очень дружелюбным cpu – helmi