2016-04-07 5 views
1

Я хочу иметь одно приложение Qt, отображающее два окна на разных выходах экрана (экранах) на моем компьютере Ubuntu 14.04. Кто-нибудь знает, как это сделать?Несколько экранов с Qt

documentation Qt для встроенного Linux - это то, что я мог найти до сих пор, но это действительно не помогло мне.

Edit: на основе ваших комментариев, я сделал это, но он не работает так, как надо:

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(0,0,200,200); 
view2.setGeometry(0,0,200,200); 

Вместо этого, вы можете установить позицию (не уверен, что если вам нужен размер также):

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

Чтобы изменить вместо того, чтобы менять положение и размер, вы можете использовать функцию move.

P.S. Могут быть небольшие опечатки, так как я написал этот код по памяти, но основная идея должна быть ясной для вас.

+0

Функция перемещения какого класса? – OnurA

+0

@OnurA 'move' функция QQuickView в вашем случае. Подобно 'view1.move (screen1-> geometry(). X(), screen1-> geometry(). Y());' – johngull

+0

у него нет функции перемещения? Вы можете найти его из документации Qt 5? – OnurA

0

Предлагаю вам взглянуть на this question и this answer on another question. Также обратитесь к документации QDesktopWidget. Надеюсь, это поможет !

+0

, пожалуйста, проверьте мое изменение выше. – OnurA

+0

Является ли [это] (http://stackoverflow.com/questions/31298810/multiple-windows-in-a-single-project) релевантным? – IAmInPLS

Смежные вопросы