2016-04-07 61 views
1

Ubuntu 14.04コンピュータの異なるディスプレイ出力(画面)に2つのウィンドウを表示する1つのQtアプリケーションが必要です。誰かがそれをする方法を知っていますか?Qtで複数の画面を表示

埋め込みLinux用のQtのdocumentationはこれまでのところ見つけられたものですが、本当に助けにはなりませんでした。

編集:あなたのコメントに基づいて 、私はこれをやったが、それはそれが必要として動作しません:

int main(int argc, char *argv[]) 
{ 
    QGuiApplication app(argc, argv); 
    QQuickView view1(QUrl(QStringLiteral("qrc:/Screen1.qml"))); 
    qDebug() << app.screens().length(); 

    QScreen* screen1 = app.screens().at(0); 
    QScreen* screen2 = app.screens().at(1); 

    view1.setGeometry(0,0,200,200); 
    view1.setScreen(screen1); 
    view1.show(); 

    QQuickView view2(QUrl(QStringLiteral("qrc:/Screen2.qml"))); 
    view2.setGeometry(0,0,200,200); 
    view2.setScreen(screen2); 
    view2.show(); 

    return app.exec(); 
} 

デバッグ出力は次のとおりです。2

このコードを入れています両方のビューが同じディスプレイ出力に出力されますが、qDebug出力では適切な数のディスプレイ出力が正しい名前で出力されます。

+0

あなたがUbuntuを使用している場合、なぜ組み込みLinuxのドキュメントを読んでいますか? : - /通常のQt5ドキュメントには、[QScreen](http://doc.qt.io/qt-5/qscreen.html)と[QWindow :: setScreen()](http:// doc。 qt.io/qt-5/qwindow.html#setScreen)...私は使用しませんでしたが、あなたの目的に合うかもしれません。 – HostileFork

答えて

4

あなたの間違いは間違った形状です。コードのこれらの2行では、あなたが同じ位置に両方のウィンドウを配置します。

view1.setGeometry(screen1->geometry().x(),screen1->geometry().y(),200,200); 
view2.setGeometry(screen2->geometry().x(),screen2->geometry().y(),200,200); 

変更するには:この代わりの

view1.setGeometry(0,0,200,200); 
view2.setGeometry(0,0,200,200); 

を、あなたは(あなたもサイズが必要な場合ではないことを確認)の位置を設定することができます位置とサイズの両方を変更するのではなく、機能moveを使用することができます。

P.S.私はこのコードをメモリで書きましたが、いくつかの小さなタイプミスがあるかもしれませんが、主なアイデアはあなたには明らかです。

+0

どのクラスの移動機能? – OnurA

+0

あなたのケースでQQuickViewの@OnurA 'move'関数。 'view1.move(screen1-> geometry().x()、screen1-> geometry()。y());' – johngull

+0

のように移動機能はありませんか?あなたはQt 5のドキュメントからそれを見つけることができますか? – OnurA

関連する問題