2017-03-09 1 views
0

DE(Unity、またはOSX)のいくつかはタイトルバーの左側にコントロールボタン(最小化、最大化、閉じる)を配置します。他の場所は右側に配置します(Windowsの場合など)。どのようにQtで現在の環境で使用されている側を検出できますか?これを行う「Qt方法」がない場合、どのようにこのプラットフォーム固有の方法(Linux用)を行うことができますか?コントロールバーの位置をQt(X11)のウィンドウタイトルバーに表示

+1

私も想像することはできません変位推測することができ、あなたはそれが(see documentation)上で実行されているプラットフォームを伝えることができますこれは可能です。 X11では、コントロールボタンの配置はウィンドウマネージャの対象ですか?私はウィンドウマネージャのテーマがこれにも影響を与えるかどうかはわかりません(ウィンドウマネージャに依存するかもしれません)。しかし、私が正しいことを覚えていれば、ウインドウマネージャーの詳細は、いくつかの標準化されたプロトコルのものを除いて、ウィジェットAPI(つまりあなたの場合はQt)の範囲外です。 Googleの「icccm」が役立つかもしれません。 – Scheff

+0

ボタンがまったくないか、タイトルバーが縦になっている場合や、ウィンドウタイトルに使用されている言語に応じてボタンが反転する場合があります。基本的には、あなたが想像することができる任意の狂った配置は、実際にいくつかのウィンドウマネージャーに存在するか、簡単に追加することができます。 –

答えて

3

Qtは、実行中のウィンドウマネージャについて何も知らないのですか?これは、の内容をWMにのみ提供します。 WMのpidは名前で存在する場合Qt - how to detect whether the application is running on GNOME or KDE?

は基本的に、彼らは検出が、WMのプロセス名がある時点で名前を変更してしまった場合、あなたのコードが壊れます:

あなたはこれを見を持っている場合があります。 (種類のLinuxへの特異的である)それ以外は

は、Qtは確かにそのため、あなたがウィンドウコントロールが

+0

不幸にも私にとって新しいことはありません。私はボタンの位置を取得するためのx11 APIのいくつかの種類が欲しいです。 – Evgeny

+0

XorgはDEについても何も知らない。入力デバイスとグラフィックスレンダリングに必要なプロトコルを「サーバーとして」提供します。また、明日のWaylandが標準になると、あなたのx11コールは中断されます。ところで、AFAIK、KDEのウィンドウテーマを使うと、どこでもコントロールボタンを配置することができます。おそらく、あなたはLinuxシステムがどのように動作しているかについて、あなたの心を明確にする必要があります。 –

+0

他の人が言っていたことに加えて、これに加えて:ウェストンとウェストンを使用すると、実際にはウィンドウの装飾がクライアント側に描画されるため、すべてのウィンドウでボタンを配置することさえできます。詳細については、こちらをご覧ください:https://blog.martin-graesslin.com/blog/2013/02/client-side-window-decorations-and-wayland/ –

関連する問題