2016-10-31 3 views
0

私はQTextCharFormatを使用してリンクスタイルをフォーマットし、QTextBrowserに挿入します。このリンクをクリックすると点線の輪郭が表示されます(これはフォーカススタイルだと思いました)。クリックしたときにこれらのドットを削除するにはどうすればよいですか?QTextBrowserの点線アウトラインを削除するには?

答えて

0

オプション

あなたは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()を参照してください。要するに、スタイルから所望の外観を問い合わせ、これは戻りデータに所望のテキストフォーマットを設定することができる。

関連する問題