如何删除 QTextBrowser 中的虚线轮廓链接?
Posted
技术标签:
【中文标题】如何删除 QTextBrowser 中的虚线轮廓链接?【英文标题】:How to remove dotted outline a link in QTextBrowser? 【发布时间】:2016-10-31 02:49:30 【问题描述】:我用QTextCharFormat
格式化链接样式并插入QTextBrowser
,当点击这个链接时,它显示虚线轮廓(我认为这是它的焦点样式)。点击后如何去除这些点?
【问题讨论】:
【参考方案1】:选项 A
如果您根本不希望QTextBrowser
获得焦点,最简单的单行解决方案是设置其focusPolicy
:
textBrowser->setFocusPolicy(Qt::NoFocus);
但请注意,这有点残忍,并且完全阻止了键盘导航。在这方面,将焦点策略设置为 Qt::TabFocus
会更好,但它不会阻止在 QTextBrowser
确实具有焦点时出现焦点矩形。
选项 B
另一种方法是使用自定义或代理样式来更改焦点指示器的外观。
#include <QProxyStyle>
class MyProxyStyle : public QProxyStyle
public:
int styleHint(StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const
if (hint == SH_TextControl_FocusIndicatorTextCharFormat)
return false;
return QProxyStyle::styleHint(hint, option, widget, returnData);
;
然后:
textBrowser->setStyle(new MyProxyStyle);
如果您对实现细节感兴趣,想了解它是如何工作的,请参阅QWidgetTextControl::getPaintContext() 和QCommonStyle::styleHint()。简单来说就是从样式中查询到想要的外观,可以在返回数据中设置想要的文本格式。
【讨论】:
以上是关于如何删除 QTextBrowser 中的虚线轮廓链接?的主要内容,如果未能解决你的问题,请参考以下文章