3

Qt 4.8.x プログラムを Qt 5.3 に移植しています。私のUbuntu 12.04 X11サーバーがNvidiaハードウェアでXineramaモードを実行している場合、Qt 4.8で正常に動作します。

以前に QtDesktopWidget を使用して、複数の画面とそのジオメトリを取得しました (5 つの接続されたディスプレイがあります)。Xinerama モードの Qt 5.3 では、QDesktopWidget::screenCount() は、5 つすべての結合である 1 つの画面のみを返します。Qt 4.8 では、正しいジオメトリで 5 つの画面が適切に返されます。

次に、Qt 5.3 で Xinerama を無効にして X サーバーを実行してみました。これで、QDesktopWidget で適切な screenCount を正しく取得でき、QApplication:screens() はアクセスできる Screen * の適切なリストを返します。

ただし、QWindow::setScreen を使用してこれらの画面のいずれかでウィンドウを開こうとすると、QWindow のコンストラクターまたは QWindow::setScreen を使用して設定した画面に関係なく、ウィンドウは常にプライマリ画面で開きます。

myapp --display :0.2 のような X11 引数を使用して、別の画面で Qt アプリケーションを開こうとすると、正常に動作します。

ただし、ディスプレイごとに異なるコンテンツがあるため、これをプログラムで行う必要があります。Xinerama モードがオンになっているかどうかに関係なく、Qt5 を使用して他の画面でウィンドウを開くことに成功した人はいますか? QDesktopWidget で Xinerama を使用したくないのですが、libxcb のみでビルドされているようです。

よろしく、ビクター

4

0 に答える 0