0

我曾经QTextCharFormat格式化链接样式并插入到aQTextBrowser中,当单击此链接时,它显示虚线轮廓(我认为这是它的焦点样式)。单击时如何删除这些点?

4

1 回答 1

2

选项 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()。简而言之,从样式中查询想要的外观,可以在返回数据中设置想要的文本格式。

于 2016-11-01T14:33:22.767 回答