带有Qt的多个屏幕

Onu*_*urA 3 linux 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();
}
Run Code Online (Sandbox Code Playgroud)

调试输出为: 2

该代码将两个视图置于相同的显示输出中,尽管该qDebug输出给出了具有正确名称的正确数量的显示输出。

joh*_*ull 5

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

view1.setGeometry(0,0,200,200);
view2.setGeometry(0,0,200,200);
Run Code Online (Sandbox Code Playgroud)

代替此,您可以设置位置(不确定是否还需要尺寸):

view1.setGeometry(screen1->geometry().x(),screen1->geometry().y(),200,200);
view2.setGeometry(screen2->geometry().x(),screen2->geometry().y(),200,200);
Run Code Online (Sandbox Code Playgroud)

要更改位置而不是同时更改位置和大小,可以使用函数move

PS:当我通过内存编写此代码时,可能会有一些小的错别字,但主要思想对您来说应该很清楚。