ときQPainter
に作成され、それがヒントをいくつかのデフォルトレンダリングしています。一部のウィジェットは、自分自身をペイントするときにそれらをオーバーライドします。これらのデフォルトをオーバーライドして、アプリケーション全体のウィジェットごとのオーバーライドを無効にすることは可能ですか?
次のようにデフォルトをオーバーライドし、すべてのウィジェットクラスを次のようにします。
painter->setRenderHints(QPainter::SmoothPixmapTransform | QPainter::Antialiasing, false);
painter->setRenderHints(QPainter::TextAntialiasing , true);
出来ますか?
更新:
簡単な答え:Qtソースコードを変更しないと不可能です。
残念ながら、Qtはこれを行うための公的な方法を実装していません。
2つの問題があります:
デフォルトのレンダリングヒント-QPainter::TextAntialiasing
はに設定されていQPainter::begin(QPaintDevice*)
ます。これはまさにあなたの質問によるとあなたが望んでいたものですが、
ウィジェットはこれらのデフォルトを自由にオーバーライドできます。そしてそれらの多くはそうします。これらをインターセプトして無視するシムペイントエンジン(または同様のもの)を挿入せずに、これを無効にする方法はありません。
それを変更する最も簡単な方法は変更することですQPainter::setRenderHint
とQPainter::setRenderHints
、特定のウィジェットタイプのオーバーライドを無効にするには、とQtを再構築します。どんなプロの設定でも、とにかくあなたはQtのあなた自身のビルドを使うでしょう、それでそれは問題ではないはずです。
おそらく、Qt自体を変更せずに、シムペイントエンジンを提供し、バッキングストアで交換することによって、Qtのプライベートヘッダーを使用してフックする方法がありますが、面倒で価値がありません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加