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->windowHandle()
关联QWindow
。然后QScreen* screen1 = app.screens().at(0); window->setGeometry(0,0,200,200);window->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:使用 QGraphicsView 和 QGraphicsWidget 在两个屏幕上显示
Qt 4.8.4 Cross-Compiled for Embedded Linux 失败并出现 QNetworkProxy 错误