0

多くのアプリケーションがQt4で構築され、一部のアプリケーションがJava(Swing)で構築されているが、KDE ​​3を使用しているという(おそらく?)異常な状況があります。RedHatEnterpriseLinux5以降を使用しています。 KDE 4の公式バージョンはありません。KDE4にアップグレードすることは、可能なオプションではありません。

お客様が必要としているプロジェクトの1つは、特定のアプリケーションをさまざまなデスクトップで開く機能です。KDE 3 APIをふるいにかけた後、KWin::setOnDesktop関数を使用してこれを行う主な方法のようです。

残念ながら、この関数を使用するには、KDEのライブラリ(libkdecore)とリンクする必要があり、Qt3のものを多数含むKDE3ヘッダーファイルをインクルードできる必要があります。したがって、実際にQt4アプリケーションのいずれかをKDEと直接通信させることはできません。

Javaアプリケーションの問題は、X11ウィンドウIDを取得することは、JNI呼び出しを経由する必要があるため、非常に面倒なことです。(JavaとX11の相互作用に関する便利なStackOverflowページがここにあります。)

この状況でデスクトップ間でウィンドウを移動する方法について誰かアドバイスがありますか?アイデアをありがとう。

4

1 に答える 1

1

KDE4 には、KDE3 の KWin ウィンドウ マネージャー (またはその他の適切なウィンドウ マネージャー) と対話する setOnDesktop メソッドもあります。KWindowSystemクラスにあります。アプリケーションでそれを使用できます。

ポイントは、setOnDesktop メソッドが基礎となる X11 プロトコルを使用してジョブを実行することです。アプリケーションが 1 つのテクノロジで作成され、ウィンドウ マネージャが別のテクノロジで作成されているかどうかは問題ではありません。

于 2010-04-07T16:14:12.023 に答える