2017-04-11 246 views
0

我正在開發一個消息應用程序。我使用QTextBrowser來顯示消息,但是當它被讀取時,我使用QTextCursor稍微改變了它。無法點擊由QTextDocument編輯的QTextBrowser中的超鏈接[qt]

在我開始編輯文本之前,我可以訪問我生成的任何超鏈接,但現在此選項不再有效。我仍然可以看到<。smt < ./a>作爲超鏈接(帶下劃線且顏色不同),但我無法訪問它。

任何想法如何改變?

QTextBrowser配置:

textBrowserReadConversation->setTextInteractionFlags(Qt::TextBrowserInteraction | Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard | Qt::LinksAccessibleByMouse | Qt::LinksAccessibleByKeyboard); 
textBrowserReadConversation->setOpenLinks(false); 
textBrowserReadConversation->setOpenExternalLinks(true); 
textBrowserReadConversation->setAcceptRichText(true); 
textBrowserReadConversation->setReadOnly(false); 

我設置QTextCursor這樣的:

QTextDocument *document(textBrowserReadConversation->document()); 
QTextCursor cursor(document); 
//then I move it to position, delete the previous text and paste the new text: 
cursor.insertHtml(html); 

回答

0

的解決方案是setTextInteractionFlags()設置文本瀏覽器(textInteractionFlags() | Qt::LinksAccessibleByMouse)。 在我的情況:

textBrowserReadConversation->setTextInteractionFlags(textBrowserReadConversation->textInteractionFlags() | Qt::LinksAccessibleByMouse | Qt::LinksAccessibleByKeyboard); 

因爲QTextBrowser文本的編輯之後將其關閉。

我發現這裏的解決方案:

https://forum.qt.io/topic/70075/qtextbrowser-anchorclicked-not-emitted/2

但我會離開的話題,因爲這是我很難通過搜索引擎找到它。