2016-03-08 3 views
3

Я хочу использовать QTextEdit (в режиме только для чтения), чтобы показать гипертекстовую ссылку, я имел обыкновение делатьClickable гиперссылка в QTextEdit

QTextEdit *textEdit = new QTextEdit; 
QTextCursor cursor(textEdit->document()); 
textEdit->setTextCursor(cursor); 
cursor->insertHtml("<a href=\"www.google.com\" >Google</a>"); 
textEdit->show(); 

этот код будет отображаться в Google в качестве гиперссылок, но не в состоянии нажать кнопку.
И если бы я использовал

QTextEdit *textEdit = new QTextEdit; 
QTextCursor cursor(textEdit->document()); 
textEdit->setTextCursor(cursor); 
QTextCharFormat linkFormat = cursor.charFormat(); 
linkFormat.setAnchor(true); 
linkFormat.setAnchorHref("http://www.google.com"); 
linkFormat.setAnchorName("Google"); 
cursor.insertText("Google", linkFormat); 

, то ничего не произойдет. «Google» - это обычный текст.

Пожалуйста, помогите мне вставить интерактивную гиперссылку на QTextEdit.

ответ

2

Вы можете использовать QTextBrowser вместо QTextEdit, если он читает только текст.

4

Использование QTextBrowser является более простым (как предложено другим ответом). Однако, если по какой-то причине вы хотите использовать QTextEdit, попробуйте изменить флаги взаимодействия текста, используя setTextInteractionFlags(). Я думаю, вы должны включить флаг Qt::LinksAccessibleByMouse.

См Qt::TextInteractionFlag и QTextEdit::textInteractionFlags

+2

Примечание: если вы используете setTextInteractionFlag() с QTextEdit, нет никакого способа, чтобы обнаружить связь была нажата. Если вы хотите вручную обработать активированную ссылку/якорь, вы должны использовать QTextBrowser. – btse

Смежные вопросы