2016-04-14 30 views
1

pyqt4私はいくつかのログエントリを表示するためにQTextEditを使用します。ログ出力は次のようにHTMLである:QTextEditの一部を動的に表示/非表示

<div class="error">Error time and message</div> 
<div class="warning">Warning time and message</div> 
Some unclassified test always visible. 

私は動的に指定されたクラスを持つdiv要素によって識別された各ログレベルの可視性を変更できるようにしたいです。私。クラスですべてのdivを作成するには、文書の内容を手動で変更することなく、というメッセージが表示されなくなりますか?

.warning { 
    text-color: transparent; 
    text-size: 0; 
} 

または類似:

答えて

0

QTextEditのようなクラス定義を受け入れるかどうか試してみてください。

warningクラスを不可視、非常に小さく、またはゼロサイズとして作成することができます。または、divの高さを0に設定してください。

必要に応じてこのクラス定義を変更し、テストの前に追加してQTextEditにリセットする必要があります。

これが実際に機能するかどうかわかりませんが、私が考えることができる唯一の方法です。

0

は、メソッドを持つQTextBlockオブジェクトを含んでいます。 <div></div>セクションを別々のテキストブロックに置くようにしてください(既に存在しない場合は、<p></p>には既に独自のブロックが割り当てられています)、QTextDocument::findBlock()またはそれに類似するメソッドを見つけ、可視性を切り替えます。 を使用して各ブロックへのヒントを設定するか、クラスに応じてブロックインデックスのセットを格納するかのいずれかでドキュメントを構築する必要があります。ブロックの可視性を変更するには、入力コンテンツを一度解析する必要があります。次に、ドキュメントを編集ウィジェットのコンテンツとして設定し、すべてのブロックをループして、ビューモードが変更されたときの可視性を設定します。

+0

どのようにブロックの*クラス*を特定しますか?ブロックには、HTMLではなくテキストが含まれています。 – ekhumoro

+0

@ekhumoroあなたはする必要がありますか? OPの例としてテキストが固定フォーマットの場合は、ブロックインデックスを使用できます。クラスを抽出する必要はありません。あるいは、ドキュメントの構築中に 'QTextBlock :: setUserData()'を使うこともできます。もちろん、これはHTML-ishソリューションではなくQt-ishですが、これはHTML/CSSを使用して解決できるとは思えません。 – Murphy

+0

エラーログの出力には一定の順序があるとは思われませんが、もしそうならインデックスを使うことはできます。しかし、多分OPは出力を制御していない(たとえば、外部ソースから来ているため)。これは、文書の内容を変更する際の制限を説明するかもしれない。 – ekhumoro

関連する問題