Qt QTextBrowser如何捕获文本并更改其光标

时间:2012-02-07 09:03:00

标签: c++ qt

我有QTextBrowser和委托类, 在QTextBrowser我用链接设置html文本,但在这个html我有文字看起来像 像这样链接css:

"<span style=\" font-size:8pt; text-decoration: underline; color:#ffffff;\">dummy_link</span>"

我想将鼠标悬停在光标上时将光标类型更改为点。然后触发Qt功能。 问题是当我尝试在QTextBrowser中使用委托类实现时 像这样的mouseMoveEvent(QMouseEvent * e):所有其他链接(标签)丢失指针游标在这里是我做的时候:

void TextBrowserDelegate::mouseMoveEvent(QMouseEvent *e)
{
  QCursor newCursor = cursor();
  Qt::CursorShape CurrCursor  = newCursor.shape();


            QTextCursor tc = cursorForPosition( e->pos() );
            tc.select( QTextCursor::WordUnderCursor ); 
            QString sharStr = tc.selectedText();
            if(sharStr == "dummy_link")
            {
                Qt::CursorShape newCursor =   Qt::PointingHandCursor;//Qt::ArrowCursor;
                setCursor(newCursor);
            }

  e->accept();

}

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

使用您提供的代码,看起来只有带有“dummy_link”文本的链接才能获得您选择的光标。如果设置了正确的标志,QTextBrowser类应自动更改光标。

QTextBrowser::setOpenLinks(true);

如果TextBrowserDelegate继承自QTextBrowser,则可以在构造函数中使用以下代码:

TextBrowserDelegate::TextBrowserDelegate(QWidget *parent){
    this->setOpenExternalLinks(true);
    this->setOpenLinks(true);
    connect(this,SIGNAL(anchorClicked(QUrl)),this,SLOT(onClickedLink(QUrl)));
}

void TextBrowserDelegate::onClickedLink(QUrl url){
    //do something with url
}