我们的应用程序使用 Qt 的 Graphics View
框架来加载 html
页面。 QGraphicsWebView
加载黑色背景的本地 html
页面。但是在启动应用程序时总是观察到白屏。我已经尝试为 QGraphicsView
和 QGraphicsScene
设置黑色背景。没有什么对我有用。
这是供您引用的示例代码。
MainWindow
继承自QMainWindow
类
mGraphicsScene = new QGraphicsScene(this);
mGraphicsView = new QGraphicsView(mGraphicsScene);
mGraphicsView->setViewport(new QGLWidget(this));
mGraphicsWebView = new QGraphicsWebView;
mGraphicsWebView->setUrl(QUrl("https://www.google.co.in/"));
mGraphicsScene->addItem(mGraphicsWebView);
setCentralWidget(mGraphicsView);
有什么办法可以避免应用白屏吗?
最好的问候, 普拉塔普
最佳答案
下一步试试。为什么看到白色?因为项目已经添加,但页面未加载,所以您看到没有页面的白色(空白)项目。为您的场景设置一些黑色像素图,将 loadFinished
信号连接到特殊插槽,您可以在其中将项目添加到场景中。在这种情况下,场景将是黑色的,但是当加载页面时,您的插槽将在 scnen 上添加它,您将只看到页面。
mGraphicsScene = new QGraphicsScene(this);
mGraphicsScene->addItem(new QGraphicsPixmapItem(QPixmap("G:/2/qt.jpg")));
mGraphicsView = new QGraphicsView(mGraphicsScene);
mGraphicsView->setViewport(new QGLWidget(this));
mGraphicsWebView = new QGraphicsWebView;
mGraphicsWebView->setUrl(QUrl("https://www.google.co.in/"));
connect(mGraphicsWebView,SIGNAL(loadFinished(bool)),this,SLOT(slotLoaded()));
//mGraphicsScene->addItem(mGraphicsWebView);
mGraphicsView->resize(1000,700);
mGraphicsView->show();
插槽:
void MainWindow::slotLoaded()
{
mGraphicsScene->addItem(mGraphicsWebView);
}
例如由代码创建的黑色像素图:
QPixmap black(1000,700);
black.fill(Qt::black);
mGraphicsScene = new QGraphicsScene(this);
mGraphicsScene->addItem(new QGraphicsPixmapItem(black));
应用启动时:
如您所见,页面加载时全黑:
如您所见,这是一个普通的页面。它不是很漂亮,因为我使用了快速设置和调整窗口大小等,但是你将 graphicsview 设置为中央小部件,这样做会更漂亮。
关于c++ - 启动 QGraphicsView 应用程序时出现白屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26278444/