6

QWidget (Qt4 または Qt5) / QWindow (Qt5 以降) をボーダレスにする方法を知っています。カスタム タイトル バーを描画し、マウスのドラッグを手動で実装して、マウスの位置をいくつか追跡しmouseMoveEvent、ウィンドウを更新するだけで画面上のウィンドウを移動します。位置。

ただし、この動作は、ウィンドウ マネージャーによって実装されているネイティブの動作とは異なります。たとえば、ウィンドウを画面の境界近くに移動すると、「フルスクリーン」または「分割画面」と解釈できます。または、システム/ウィンドウ マネージャーに応じて、ウィンドウが互いの境界線にスナップします。上記のようなウィンドウの移動を実装すると、これらのことは機能しません。

Google Chrome / Chromium は、ウィンドウ マネージャーのネイティブな動作に適応しながら、カスタム ウィンドウのタイトル バーと境界線を実装するアプリケーションの一例にすぎません。Chrome がこれらを単独で実装する (そしてウィンドウ マネージャーとその構成を検出する) のか、それともほとんどのウィンドウ マネージャーに「ネイティブ ウィンドウの移動を開始する」ことを伝える機能があるのか​​ (明らかに、これは依然としてプラットフォームに大きく依存する) かどうか疑問に思っています。 「ネイティブウィンドウの動きを止める」など。

Qtでそのようなことは可能ですか?そうでない場合は、Qxt などの他のライブラリを使用することはできますか?

参考までに: 私は主に Windows と Linux をターゲットにしていますが、ユーザーが任意のウィンドウ マネージャーをインストールすることが難しいことがわかっています。

4

1 に答える 1