1

我们的应用程序使用 Qt 的Graphics View框架来加载html页面。QGraphicsWebView加载html黑色背景的本地页面。但是在启动应用程序时总是观察到白屏。我尝试为QGraphicsView和设置黑色背景QGraphicsScene。没有什么对我有用。

这是供您参考的示例代码。 MainWindowQMainWindow类继承

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

有什么办法可以避免应用程序出现白屏?

最好的问候, 普拉塔普

4

2 回答 2

1

接下来试试。为什么看到白色?因为项目已添加,但页面未加载,所以您会看到没有页面的白色(空白)项目。为您的场景设置一些黑色像素图,将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设置为中心小部件,这样做会更漂亮。

于 2014-10-09T13:00:13.320 回答
0

非常感谢您的回复。

我已经尝试过您的解决方案,并且在Windows上启动应用程序时还观察到白屏 我发现罪魁祸首是 mGraphicsWebView->setUrl(QUrl(" https://www.google.co.in/ ")); 这会阻塞场景中的所有其他小部件。所以我添加了一个singleShot 计时器并将此声明保留在此之下。//QTimer::singleShot(100, this, SLOT(loadUrl())); 然后它工作正常。

如果您有更好的主意,请告诉我。

于 2014-10-10T12:13:21.270 回答