2

システム(RHEL 6.3)にデュアルディスプレイグラフィックカードがあります。

2つの異なるUIをスローするqtcreator(qt-4.8)を使用して1つの単純なアプリケーションを開発しました。

これを実行すると、両方のUIが1つのディスプレイでのみ起動します。

必要なのは、1つのUIをプライマリ画面で実行し、もう1つをセカンダリ画面(つまり、0.0と0.1)で実行する必要があることです。

qt-creatorを使用してこれを行うにはどうすればよいですか?

xclock -display :0.0 
xclock -display :0.1

正常に動作します。

4

2 に答える 2

2

QDesktopWidgetを使用して、画面情報を取得できます。これにより、画面の数と各画面のサイズを次のように照会できます。

int QDesktopWidget::screenCount () const;
const QRect QDesktopWidget::availableGeometry ( int screen = -1 ) const;

そこから、ウィジェットを任意の画面に移動できます。たとえば、次のコードは、ウィジェットを特定の画面に移動するか、指定された画面が使用できない場合はデフォルトの画面に移動します。

QDesktopWidget* w = QApplication::desktop();
//some value
int mydesiredscreen = 1;
//fallback to default screen if none
if(mydesiredscreen >=  w->screenCount())  mydesiredscreen = -1; 

QRect rect1 = w->availableGeometry(mydesiredscreen);
mywindow->move(rect1.topLeft());
于 2013-02-05T08:47:38.600 に答える
1

テジャス、

2番目のUIをセカンダリモニターに表示するには、2番目のUIのsetParentプロパティを次のように使用できます。

int screenNumber = 1; /*必要な画面なし*/

QWidget SecondaryUI_widget; /*セカンダリモニターに表示されるセカンダリUIオブジェクト*/

QDesktopWidget myDesktopWidget; /*QDesktopWidgetのオブジェクトを作成します*/

secondUI_myDesktopWidget.setParent(myDesktopWidget(screenNumber));

上記の行は、UIオブジェクトの親としてページを表示する画面を設定します。これで、プログラム内の任意の場所で2番目のUIに対してshow()関数を呼び出すことができます。2番目のUIは、screenNumber値によって目的の画面番号に表示されます。

于 2013-03-21T17:13:33.527 に答える