Qt Embedded:使用 QGraphicsView 和 QGraphicsWidget 在两个屏幕上显示

Posted

技术标签:

【中文标题】Qt Embedded:使用 QGraphicsView 和 QGraphicsWidget 在两个屏幕上显示【英文标题】:Qt Embedded: displaying on two screens using QGraphicsView and QGraphicsWidget 【发布时间】:2019-01-09 14:46:26 【问题描述】:

我使用的是嵌入式 QT 4.8。小部件基于 QGraphicsView 和 QGraphicsWidget。需要控制两个显示器。

到目前为止,我能够找到有关如何使用 QDesktopWidget(即 QWidget)控制两个显示器的建议。我认为必须有一种方法可以通过 QGraphicsWidget 使用两个帧缓冲区来控制两个屏幕。

谁能给我一个参考,例如如何使用 QGraphicsView 和 QGraphicsWidget 以及两个帧缓冲区在两个屏幕上绘画?

谢谢, 杜桑·穆德里克。

【问题讨论】:

【参考方案1】:

试试这个。我没有 2 个屏幕,所以我无法测试

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();

查看不相关但相似的问题 Multiple Screens with Qt

【讨论】:

谢谢。我看到了那个链接。我的 QT 没有 QQuickView。代码库很大,基于 QGraphicsView 和 QGraphicsWidget。我需要一种通过 fb0 或 fb1 显示 QGraphicsScene 或 QGraphicsView 或其矩形的方法。 方法setScreen(screen)也可以在QWindow中找到。我猜你的 QGraphicsView 在 QWindow 或 QDialog 内。尝试在那个http://doc.qt.io/qt-5/qwindow.html#setScreen上调用setScreen QT应用程序使用QGraphicsScene矩形在第一个屏幕上可视化QGraphicsView
 QGraphicsScene* pScene = new QGraphicsScene(); QGraphicsView* pView = new QGraphicsView(pScene); pView->showFullScreen(); QGraphicsWidget 图像被绘制在由 setGeometry 设置的矩形中,使用 QPainter。
QWindow * window=pView-&gt;windowHandle() 关联QWindow。然后QScreen* screen1 = app.screens().at(0); window-&gt;setGeometry(0,0,200,200);window-&gt;setScreen(screen1);qt5中引入的QWidget->windowHandle()。您的 QGraphicsView 可能需要是没有父级的***小部件。你是在做游戏还是什么? 我使用的是 QT 4.8.7,它没有 windowHandle()。是否可以使用 pScene->setSceneRect() 定义更大的 QGraphicsScene 矩形,第二个屏幕位于右侧,矩形大小为 screen_1X+screen_2X, max(screen_1Y, screen_2Y)?为第二个屏幕添加皮肤时,QT 可以使用 screen_1X 偏移量来定位它们吗?

以上是关于Qt Embedded:使用 QGraphicsView 和 QGraphicsWidget 在两个屏幕上显示的主要内容,如果未能解决你的问题,请参考以下文章

Qt/Embedded 简介

体验构建和使用 Qt Embedded

Qt Embedded:使用 QGraphicsView 和 QGraphicsWidget 在两个屏幕上显示

Qt 4.8.4 Cross-Compiled for Embedded Linux 失败并出现 QNetworkProxy 错误

QVFB 无法显示 -- QT for Embedded linux 演示示例

Qt4.8.6 Embedded Linux 的编译与移植