我曾经QTextCharFormat
格式化链接样式并插入到aQTextBrowser
中,当单击此链接时,它显示虚线轮廓(我认为这是它的焦点样式)。单击时如何删除这些点?
问问题
311 次
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 回答