Несколько экранов с 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. Надеюсь, это поможет!

Другие вопросы по тегам