出力ウィンドウが特殊なQTextEditである Qt アプリケーションにコンソール ウィンドウがあり、コマンドがQLineEditから解析され、その後メイン プログラムによって実行された後に処理されるメッセージを出力します。ウィンドウは、通常のメッセージ、警告、および必要に応じてテキストを 6 種類のカスタム カラーで出力できます。8 つの異なるタイプのテキストはすべて、タイプ QColor の8 つの異なるQPropertiesによって色が定義されています。これらは、ロード時にQApplicationに適用される QSS ファイルを使用して、残りの出力ウィンドウのスタイリングと共に設定されます。特定の色でテキストを書き込むには、 QTextEditでsetTextColorを呼び出します。テキストを挿入する直前。(余談ですが、QTextEditで呼び出されたときのmoveCursorは、以前に設定されていたものに関係なく、挿入されるテキストの色をデフォルトの色にリセットするように見えますが、呼び出しの直後に目的のテキストの色を設定するようにしましたmoveCursorと insertPlainText を呼び出す前。 )
私が抱えている問題は、 qApp->setStyleSheetを介して適用されたスタイリングが、メッセージ キューが処理されるまで実際には適用されないように見えることです (私が見る限り) 。プログラムが開始されると、スタイル シートが適用され、その後すぐにハードコードされたテスト メッセージがコンソール ウィンドウに送信され、最後のコンパイルの日付と時刻が表示されます。このメッセージは、元のQTextEditに出力されてしまいますスタイル シートの黒の背景色が適用された後は見えなくなります。問題は、スタイルが適用されるときにコンソール ウィンドウの標準テキストの色を設定するほど単純ではありません。スタイリングが有効になる前に、任意の数のメッセージがコンソール ウィンドウに送信される可能性があり、その結果、任意の数の異なる色のメッセージが表示される可能性があります。
この問題を解決する最善の方法を考えようとしています。現時点で私が考えることができる最善の方法は、メッセージがセマンティック タグで囲まれるタグ付け方法です (たとえば、すべての警告メッセージは HTML のようなタグで囲まれ、警告であることを指定します)。が適用されると、各メッセージは新しいスタイルに従って再配色されます。これには明らかに、QTextEdit の「OnStyleApplied」イベントへのフックが必要です。これは可能でしょうか、それともこれを解決するためのより良い方法はありますか?