2012-09-22 48 views
1

当我按下QTextBrowser中的右键单击时,我需要突出显示并获取鼠标指针下的单词。我已经实现了showContextMenu函数为QTextBrowser为鼠标右键单击的事情。不过,我无法突出显示鼠标指针下的单词并将其解压。我发现下面的解决方案在线:在Qt中选择鼠标指针下的单词

QTextCursor tc = txtBrwsr->textCursor(); 
tc.select(QTextCursor::WordUnderCursor); 
QString word = tc.selectedText(); 

但是,它不工作和是空的,我这背后的目的是获得了这个词,并强调它,即使用户没有突出的词然后按下鼠标右键。

任何帮助表示赞赏。

+0

在'tc.select(...)'之后使用'txtBrwsr-> setTextCursor(tc);''。 我试过你的例子,它适用于我(Qt 4.8.1,Mac)。 –

回答

1

textCursor()函数返回QTextCursor的一个副本。 全部变更后您需要致电setTextCursor()

这是如何在右键单击后在鼠标光标下突出显示单词的示例。

MyTextBrowser.h

class MyTextBrowser : public QTextBrowser { 
// ... 
protected: 
    void mousePressEvent(QMouseEvent *mouseEvent); 
// ... 
}; 

MyTextBrowser.cpp

void MyTextBrowser::mousePressEvent(QMouseEvent *mouseEvent) { 
    if (Qt::RightButton == mouseEvent->button()) { 
     QTextCursor textCursor = cursorForPosition(mouseEvent->pos()); 
     textCursor.select(QTextCursor::WordUnderCursor); 
     setTextCursor(textCursor); 
     QString word = textCursor.selectedText(); 

     qDebug() << word; 
    } 
    QTextBrowser::mousePressEvent(mouseEvent); 
} 

好运。