如何删除QTextBrowser中的虚线轮廓链接?

时间:2016-10-31 02:49:31

标签: qt qtextbrowser

我使用QTextCharFormat格式化链接样式并插入QTextBrowser,单击此链接时,它显示虚线轮廓(我认为这是它的焦点样式)。点击后如何删除这些点?

1 个答案:

答案 0 :(得分: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()。简而言之,从样式中查询所需的外观,可以在返回数据中设置所需的文本格式。