2016-04-07 17 views
1

Ubuntu 14.04 bilgisayarımdaki farklı ekran çıkışlarında (ekranlar) iki pencere gösteren tek bir Qt uygulamasına sahip olmak istiyorum. Birisi bunu nasıl yapacağını biliyor mu?Qt ile Çoklu Ekranlar

Gömülü linux için QT'nin documentation'u, şu ana kadar bulabildiğim şeydi, ancak bana gerçekten yardımcı olmadı.

Düzenleme:

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(); 
} 

ayıklama çıkışı: Bu kod koyuyor 2

olması gerektiği gibi Yorumlarınıza dayanarak , bunu yaptık ama çalışmıyor qDebug çıktısı doğru adlara sahip doğru sayıda görüntü çıkışı vermesine rağmen, her iki görüntüde aynı ekran çıktısı görüntülenir.

+0

Ubuntu'daysanız, neden gömülü Linux belgelerini okuyorsunuz? : -/Düzenli Qt5 belgelerinde [QScreen] (http://doc.qt.io/qt-5/qscreen.html) ve [QWindow :: setScreen()] (http: // doc. qt.io/qt-5/qwindow.html#setScreen) ... ben kullanmadım ama amacına uygun olabilir. – HostileFork

cevap

4

Sizin hatanız hatalı geometri. Bu kod 2 satırlarda, aynı pozisyonda her iki pencere yerleştirin:

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

değiştirmek için: Bunun yerine

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

yaptığında (ayrıca boyutu gerekiyorsa emin) konumunu ayarlayabilirsiniz pozisyonu ve boyutu değiştirmek yerine pozisyonu move fonksiyonunu kullanabilirsiniz.

P.S. Bu kodu hafızayla yazdığımda bazı küçük yazım hataları olabilir, ancak ana fikir sizin için açık olmalıdır.

+0

hangi sınıfın işlevini taşıyorsunuz? Durumunuzda QQuickView öğesinin – OnurA

+0

@OnurA 'move' işlevi. View1.move (screen1-> geometry(). X(), screen1-> geometry(). Y()); ' – johngull

+0

gibi herhangi bir hareket işlevi yok mu? Qt 5 belgelerinden bunu bulabilir misiniz? – OnurA