グループ KDABは、Qt、C ++、およびOpenGLアプリケーションのソフトウェアコンサルタント会社です。 それに加えて、さまざまなプラットフォーム(デスクトップ、組み込み、モバイル)用 Qtアプリケーションを最初から開発するための指導を提供します そして、すべての人気のあるフレームをQtに転送します。
長年にわたり、 KDABは、QDockWidgetの開発に貢献し、資金を提供してきました。。 ただし、QdockWidgetを使用して変更とバグ修正を実装するには何日もかかったため、 それは良い選択肢ではないことが判明したため、KDDockWidgetsが誕生しました。
KDDockWidgetsは QDockWidgetsの高度なドッキングフレームワーク、QDockWidgetsがサポートしていない機能を追加することにより、その使用を拡張します。
QdockWidgetは、GUIコードとロジック、状態をネイティブに組み合わせます。 LO Queの 新しい機能を進めるのが非常に難しくなりますが、 これにより、さまざまなプラットフォーム内での実装が非常に複雑になります。 これは多くのグラフィカルユーザーインターフェイスの基本コンポーネントであるため、ウィンドウ要素全体(ツールバー、ウィジェットグループなど)を好きな場所に移動できます。
しかし、 KDABは、QDockWidgetsコードの保守はそれほど簡単ではないと主張しました。 彼がコメントするように:
KDDockWidgetsは、大規模なカスタマイズが必要なXNUMXつのプロジェクトに取り組んだ後、正気を保つ必要性から生まれました。 直接上流で作業しようとしたが、回帰率が高すぎたもの。
また、プライベートAPI、偽のマウスイベント、イベントフィルタを使用するルートをたどった別の方法は、最初は良いアイデアのように見えましたが、結局は苦痛の世界になりました。 また、クライアントはリクエストに対してよりクリエイティブになっているため、より優れたドッキングフレームワークが必要であることは明らかでした。
主な問題はその設計です、非常にモノリシックですが、構成可能(アニメーションの場合、ユーザーが使用できる機能を選択できます)、スパゲッティコード(ロジックとコンポーネントの状態をうまく混合)を使用します。 したがって、変更を加えると、多数のリグレッションが発生する可能性があります。
KDABがKDDockWidgetsを作成することを決定したのはそのためです、特定の状況への適応を容易にしながら、QDockWidgetsの設計を大幅に簡素化しようとしています。
KDDockWidgetsは、次の機能を提供します。
- ウィジェットをフローティングウィンドウにドッキングし、そのグループをメインウィンドウにドッキングできる
- メインウィンドウだけでなく、任意のウィンドウにドッキングします
- メインウィンドウの中央にドッキング
- メインウィンドウ内の中央ウィジェットでの取り外し可能なタブのサポート
- ドッキングエリアのタブバーからタブを取り外すことができる
- 複数のコンポーネントを組み合わせることにより、複数のタブを組み合わせる機能。
- ユーザーがウィジェットをカスタマイズしたり、独自に提供したりできるように、内部ヘルプウィジェットを公開します。
- コンポーネントグループは、外部ウィンドウ(このコンポーネントグループのみを含む)からメインウィンドウ(Qt 5.10で部分的に実装された機能)に自由に切り替えることができます。
- タブウィジェットをカスタマイズする
- タイトルバーをカスタマイズする
- ウィンドウフレームをカスタマイズする
- 主な変更点は、GUIから要素を削除するための正確なインジケーターの追加であることに加えて、中央ウィジェットの概念が消えてしまうという事実に加えて、それ自体が特定の要素ではなくなったためです。
新しい組織は、ロジックをグラフィカルインターフェイスから明確に分離します、そのため、基になるランタイムは QtQuickインターフェースに簡単に再利用できます (これは最終的に予想されます)。 また、インターフェイスのカスタマイズも簡単になり、ユーザーはインターフェイスの任意の部分に独自のウィジェットを提供できます。
さらに、 KDDockWidgetsはフレームワークを目的としているため、インターフェイスを簡単にオーバーライドできます カスタムの外観と動作を提供します。 KDDockWidgetsはオープンソースフレームワークであり、 これはGPLv2およびGPLv3ライセンスの下にあります。
KDDockWidgetsコードとそのデモが利用可能です 次のリンクで。