启动QGraphicsView应用程序时观察到白屏

时间:2014-10-09 12:28:00

标签: c++ qt qt5 qt5.2

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

以下是供您参考的示例代码。 从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);

有没有办法避免申请白屏?

最诚挚的问候, 普拉塔普

2 个答案:

答案 0 :(得分: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);
}

例如由代码创建的黑色pixmap:

QPixmap black(1000,700);
black.fill(Qt::black);

mGraphicsScene = new QGraphicsScene(this);
mGraphicsScene->addItem(new QGraphicsPixmapItem(black));

申请开始时:

enter image description here

正如您所看到的,当页面加载时,一切都是黑色的:

enter image description here

如您所见,这是正常页面。它不是很漂亮,因为我使用快速设置和调整窗口大小等等,但是你将graphicsview设置为中央小部件,它会更漂亮。

答案 1 :(得分:0)

非常感谢您的回复。

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

如果您有任何更好的想法,请告诉我。