Несколько экранов с Qt
Я хочу иметь одно приложение Qt, отображающее два окна на разных выходах (экранах) на моем компьютере с Ubuntu 14.04. Кто-нибудь знает, как это сделать?
Документация по Qt для встроенного Linux - это то, что я мог найти до сих пор, но это не помогло мне на самом деле.
Изменить: Основываясь на ваших комментариях, я сделал это, но это не работает так, как должно:
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
output дает правильное количество отображаемых выходов с правильными именами.
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
,
PS Может быть несколько мелких опечаток, когда я написал этот код по памяти, но основная идея должна быть понятна для вас.
Я предлагаю вам взглянуть на этот вопрос и этот ответ на другой вопрос. Также обратитесь к документации по QDesktopWidget. Надеюсь, это поможет!