【问题标题】:How to remove dotted outline a link in QTextBrowser?如何删除 QTextBrowser 中的虚线轮廓链接?
【发布时间】:2016-10-31 02:49:30
【问题描述】:

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

【问题讨论】:

    标签: qt 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()。简单来说就是从样式中查询到想要的外观,可以在返回数据中设置想要的文本格式。

    【讨论】:

      猜你喜欢
      • 2010-09-09
      • 1970-01-01
      • 2016-04-10
      • 2011-04-12
      • 2019-07-06
      • 2012-09-22
      • 2016-05-06
      • 1970-01-01
      • 2010-10-23
      相关资源
      最近更新 更多