我使用QTextCharFormat
格式化链接样式并插入QTextBrowser
,单击此链接时,它显示虚线轮廓(我认为这是它的焦点样式)。点击后如何删除这些点?
答案 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()。简而言之,从样式中查询所需的外观,可以在返回数据中设置所需的文本格式。