如何删除 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 中的虚线轮廓链接?的主要内容,如果未能解决你的问题,请参考以下文章

从 Firefox 中的范围输入元素中删除虚线轮廓

删除Firefox中的虚线轮廓

CSS 删除Firefox中链接的虚线轮廓

无法从 Firefox 选择下拉菜单中删除轮廓/虚线边框 [重复]

如何删除html中单击的元素周围的虚线

CSS 在Firefox中删除BUTTONS上的虚线轮廓