2014-10-09 41 views
1

我們的應用程序使用Qt的Graphics View框架來加載html頁面。 QGraphicsWebView加載本地html黑色背景的頁面。但總是在啓動應用程序時觀察白屏。我曾嘗試設置QGraphicsViewQGraphicsScene的黑色背景。沒有爲我工作。在啓動QGraphicsView應用程序時觀察到的白色屏幕

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

繼承有什麼辦法,以避免應用程序的白色屏幕?

最好的問候, 普拉塔普

回答

1

嘗試下一個。你爲什麼看到白色?由於項目已添加,但頁面未加載,因此您會看到沒有頁面的白色(空白)項目。設置到你的場景一些黑色的pixmap,連接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)); 

當應用程序開始:

enter image description here

正如你所看到的,是黑色的,加載頁面時:

enter image description here

正如你所看到的,這是正常的頁面。它不是很漂亮,因爲我使用快速設置和調整窗口大小等,但是您將graphicsview設置爲中央控件,它會更漂亮。

0

非常感謝您的回覆。

我已經試過您的解決方案,也觀察到白色的屏幕,而在啓動應用程序的Windows 我發現罪魁禍首是mGraphicsWebView-> setUrl(QUrl(「https://www.google.co.in/」));這會阻止場景中的所有其他小部件。所以我添加了一個singleShot計時器並在此之下保存了這個聲明。 // QTimer :: singleShot(100,this,SLOT(loadUrl()));然後它工作正常。

請讓我知道你是否有更好的主意。

+0

你應該在評論中寫下這些內容,我沒有收到關於你答案的任何通知,我很高興看到這個問題,看看你寫了什麼。我不知道爲什麼setUrl這樣做,在我的電腦上一切正常。但是,如果你的情況,你使用這個具體的事情,所以你沒有另一種解決方案。不管怎麼說,singleshot不是很糟糕。但當然,你可以做到這一點,yopu應該避免這種情況。 – Chernobyl 2014-10-10 18:05:36

相關問題