我有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();
}
我在这里做错了什么?
答案 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
}