Qt的多个屏幕

时间:2016-04-07 11:19:02

标签: linux qt

我希望在我的Ubuntu 14.04计算机上有一个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输出提供了正确名称的正确显示输出数。

2 个答案:

答案 0 :(得分:5)

你的错误是错误的几何。在这两行代码中,您将两个窗口放在相同位置:

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。我通过记忆编写这段代码时可能会有一些小错字,但主要的想法应该是适合你的。

答案 1 :(得分:0)

我建议你看看this questionthis answer on another question。另请参阅QDesktopWidget的文档。希望有所帮助!