2012-02-07 61 views
1

我QTextBrowser與委託類, 在QTextBrowser我設置的鏈接HTML文本,但在這個網站我有文字,看起來像用CSS 鏈接是這樣的:Qt的QTextBrowser如何捕獲文本並改變其光標

"<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(); 

} 

我在這裏做錯了什麼?

回答

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 
}