Kubuntu 12.10 LinuxマシンにQt4と一緒にQt5をインストールしたところ、次のことに気づきました。
- Qt4でコンパイルされたプログラムは、ネイティブのKDEルックアンドフィールを備えています。私はデフォルトのKDEのOxygenテーマを使用しており、プログラムも使用しています(タイトルとフォーカスされたウィジェットの青い選択による滑らかなグラデーションに注意してください)。
- しかし、コードを変更せずにQt5で再コンパイルすると、異なるスタイルが使用され( Fusionと呼ばれるように見えます)、ぎこちなく、場違いに見えます(右の写真を参照)
私が欲しいのはかなり単純です。私は自分のアプリを周囲のシステムに適合させたい、つまり常にネイティブに見えるようにしたいのです。Qt4を使用する場合、デフォルトでこれを使用することに慣れています。Qt5は、Windowsでも通常のネイティブな外観を持っているように見えました。しかし、Kubuntuでも同じようにするにはどうすればよいですか?そして、理想的には、どこでも?つまり、アプリのLinuxビルドでOxygenを厳密に使用するように強制したくありません。古き良きQt4と同じように、現在KDEで設定されているテーマを使用したいと思います。
アプリコードはこの問題に関連していないようです。QStyleを使用していません。これは、Qtのhello-worldの典型的な例です。ただし、GitHubにある場合に備えて。
UPD: @peppeは、この問題が発生する理由についてかなり十分な回答をしています(KDEの酸素テーマはQt4に対してコンパイルされており、Qt5では使用できません)。しかし、私はまだこれを修正する方法についての答えを探していますか?試してみる酸素テーマソースを見つけようとしましたが、 Firefoxテーマ以外は見つかりませんでした。
UPD2: @kwirzは興味深いアイデアを提案しました:アプリにGTK +テーマを使用させ、GTKウィンドウをOxygenに似せるKDE設定でoxygen-gtkを有効にします。一方では、それは確かに酸素に近いように見えます:
しかし一方で、すでに小さな違いがあります。読み取り専用の行編集が灰色になり、フォーカスされたボタンがまだ強調表示されていないなどです。残念ながら、この手法をより複雑なウィジェットに適用しようとすると、さらに多くのアーティファクトが表示されます(特にコンボボックスで)およびスピナー):
したがって、この手法は完全な解決策にはなり得ないように思われますが、それでも非常に有用なのは単純なケースです。