21

Kubuntu 12.10 LinuxマシンにQt4と一緒にQt5をインストールしたところ、次のことに気づきました。

  • Qt4でコンパイルされたプログラムは、ネイティブのKDEルックアンドフィールを備えています。私はデフォルトのKDEのOxygenテーマを使用しており、プログラムも使用しています(タイトルとフォーカスされたウィジェットの青い選択による滑らかなグラデーションに注意してください)。
  • しかし、コードを変更せずにQt5で再コンパイルすると、異なるスタイルが使用され( Fusionと呼ばれるように見えます)、ぎこちなく、場違いに見えます(右の写真を参照)

Qt4アプリのネイティブルックQt5アプリのネイティブルックではありません

私が欲しいのはかなり単純です。私は自分のアプリを周囲のシステムに適合させたい、つまり常にネイティブに見えるようにしたいのです。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を有効にします。一方では、それは確かに酸素に近いように見えます:

酸素-gtkを使用したQt5アプリのセミネイティブルック

しかし一方で、すでに小さな違いがあります。読み取り専用の行編集が灰色になり、フォーカスされたボタンがまだ強調表示されていないなどです。残念ながら、この手法をより複雑なウィジェットに適用しようとすると、さらに多くのアーティファクトが表示されます(特にコンボボックスで)およびスピナー):

酸素-gtkを使用したQComboBoxおよびQTimeEditのアーティファクト

したがって、この手法は完全な解決策にはなり得ないように思われますが、それでも非常に有用なのは単純なケースです。

4

4 に答える 4

15

酸素はKDEの一部であるため、そこにあります。スタンドアロンのテーマではありません。Qt 5に対してKDEを構築することはできません、それはサポートされていません。KDEの次のメジャーバージョン(KDE 5)はQt5を使用します。

だから今、あなたができることは絶対にありません。アプリケーションをKDE4で見栄えよく動作させたい場合は、Qt4を使用してください。

于 2013-02-17T10:42:10.770 に答える
9

これはアプリではありません。OxygenがQt5ではなくQt4に対してコンパイルされているため、Qt 5はそれを使用できず、デフォルトのスタイル(「フュージョン」)にフォールバックします。スタイルは実際にはプラグインであることに注意してください。つまり、ロードして使用するためのAPI/ABI要件の対象となるコードです。Qt5に対してコンパイルされたOxygenスタイルが必要です。

于 2013-02-14T17:03:11.343 に答える
4

試す

QApplication::setStyle(QStyleFactory::create("GTK+"));

回避策として、oxygen-gtkがインストールされている場合はネイティブに見えます。

于 2013-04-12T07:09:31.973 に答える
1

次のパラメータを使用してQt5アプリケーションを起動します。

-style=gtk

私が知っているグローバル設定はありません。これにより、すべてのQT5アプリでこれが可能になります。

幸運を!

于 2015-04-22T17:50:36.200 に答える