2016-10-08 9 views
1

QSSスタイルシートを使用して、pyQtアプリケーションの一部の要素の外観を変更しています。これは、これらの要素の多くの他のプロパティをオーバーライドする効果も持っています(ドキュメントやチュートリアルに記載されています)。PyQtアプリケーション:一部のQSS要素を変更した後に元のルックアンドフィールを復元します

ここでは、これらのオーバーライドされたプロパティを復元したいと思いますが、既定のテーマが定義されているシステム上に「元の」スタイルシートを見つけることはできませんでした。これらのスタイルシートの情報を使用して、元の外観の残りの部分を復元することができました。

誰かが私にこれらのスタイルシートを見つけるヒントを教えてもらえますか?または私の目標を達成するためのよりエレガントな方法はありますか?

+0

このようなスタイルシートはありません。オリジナルのスタイリングは、スタイルプラグインによって提供されます:[スタイルとスタイルアウェアウィジェット](http://doc.qt.io/qt-5/style-reference.html)を参照してください。 (注意: 'QProxyStyle'クラスはPyQt5でしか利用できません)。 – ekhumoro

+0

私のハードディスク上の* .qssと* .cssを検索しても困っていた理由を説明します... 個々のウィジェットやクラスのCSS/qssプロパティを設定するのは、 Qtのスタイルシステム? @ekhumoro:私は答えとしてあなたのコメントを受け入れるだろう、私が望んでいた単純な解決策はないようだ。 – Chipmuenk

+0

要するに:それは依存しています(下記の私の答えを見てください)。 – ekhumoro

答えて

0

デフォルトのスタイルシートはありません。すべてのデフォルトのスタイリングはstyle pluginsによって行われます。

スタイルシートを設定すると、QStyleSheetStyleというインスタンス(QWindowsStyleのサブクラス)が作成され、現在のスタイルへの参照が渡されます。 QStyleSheetStyleはQSSルールを現在のスタイルのの上に適用しようとしますが、これが不可能な場合はQWindowsStyleに戻ります。

これは、特定のQSSルールが何をするのかを簡単に判断する方法がないため、問題が起きる場所です。時にはそれは非常に正確な効果を持っており、それ以外の時は通常のスタイリングを完全に壊すでしょう。さらに、正確な結果は、現在のスタイルが何であるかによって異なります。したがって、QSSルールはあなた自身のシステムではよく見えるかもしれませんが、他の人にはそうなる保証はありません。

したがって、スタイルシートの使用は常に妥協です。カスタムQStyleを作成すると、より多くの制御が可能になりますが、スタイルシートは通常は書込みと保守がはるかに簡単になります。したがって、利便性と精度のトレードオフです。

ただし、3番目のオプションがあります。何もしない。ユーザーのウィジェットスタイルの選択を尊重してください。少なくとも、あなたの受け入れを強要しないでください。

+0

3番目のオプションが付いています。私が設定したいくつかのスタイルには機能があります(無効なエントリなどの強調表示など)が、実際にユーザーに自分の好みを強制しています。私はスタイルプラグインシステムを見てみましょう。 – Chipmuenk

関連する問題