Qt QTextBrowser Как захватить текст и изменить его курсор - PullRequest
1 голос
/ 07 февраля 2012

У меня есть 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 голосов
/ 22 февраля 2012

С кодом, который вы указали, похоже, что только ссылка с текстом «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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...