web-dev-qa-db-ja.com

「きれいな」Qtカスタムウィジェットの作成

見た目が...まあ...醜いカスタムウィジェット(Qtを使用)を作成する背後にあるプロセスは何ですか?

リストボックスとプッシュボタンを1つにまとめた「カスタムウィジェット」を作成するのはかなり簡単なことですが、次のようなものを作成するにはどうすればよいでしょうか。

QAnalogWidgets

基本的にPNGの背景(Photoshopで作成したもの)を使用し、その上にQLabelなどの基本的な要素を配置したラフなモックアップをいくつか作成しましたが、これは私が行うべき方法ではないと思います。 QtがCSSをサポートしていることは知っていますが、これは実際に見栄えのするウィジェットを作成するために人々が使用するものですか? paintEventメソッドで作業する必要がありますか? OpenGL?

「カスタムウィジェットqt」に関連するものを検索しようとすると、それらをDesignerなどにインポートする方法に関する大量の情報が得られます。リードをいただければ幸いです。

ありがとう!

25
swanson

記載されている順序で、基本的に3つの異なる方法を試してください。

  1. CSS /スタイルシート 。スタイルシートは、ニーズに対して十分に強力な場合、優れており、実行時のスタイル変更が可能です。 スタイルシートの例 を参照してください。
  2. カスタムペイント 。カスタムペイントを使用すると、事実上何でもできます。 QtによるPNGとSVGのサポートは大いに役立つはずです。 塗装例 をご覧ください。また、 QStyle のドキュメントを参照して、考慮すべきスタイル情報の種類を理解してください。
  3. カスタムスタイル 。アプリケーション全体をカスタマイズする必要がある場合は、独自のスタイルを作成することをお勧めします。気弱な人向けではありません。

基本的に、あなたのために働く最も簡単な可能な解決策を選んでください。また、 Qt Creator を見てください。スタイルが適切で、すべての ソースコード が利用可能です。

30
Kaleb Pederson

これは、システムのトップバーを削除し、背景を描画してカスタムウィンドウを作成するためのチュートリアルです: http://qt.developpez.com/tutoriels/braindeadbzh/customwindow/

彼はQWidgetをサブクラス化しているので、QPushButtonのようなすべてのQWidgetサブクラスに対してこれを行うことができます。

QTDesignerでそれらを使用する場合は、クラスを含めてから、「クラシック」ウィジェットをカスタムウィジェットにプロモートします。これは役立つ場合があります: http://pepper.troll.no/s60prereleases/doc/designer-using-custom-widgets.html。

10