2014-10-09 3 views
1

우리 응용 프로그램에서는 Qt의 Graphics View 프레임 워크를 사용하여 html 페이지를로드합니다. QGraphicsWebView 검은 색 배경 인 로컬 html 페이지를로드합니다. 그러나 응용 프로그램을 실행하는 동안 항상 흰색 화면이 나타납니다. 나는 QGraphicsViewQGraphicsScene 모두에 검은 색 배경을 설정하려고했습니다. 아무것도 나를 위해 일한 적이 없다.QGraphicsView 응용 프로그램을 실행하는 동안 흰색 화면이 표시됩니다.

다음은 참조 용 샘플 코드입니다. 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); 

에서 상속 는 MainWindow 응용 프로그램의 흰색 화면을 피할 수있는 방법이 있습니까?

최고 감사합니다, 프라 탑은

답변

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

때 어플리케이션 시작 :

enter image description here

당신이 볼 수 있듯이 페이지가로드되었을 때, 모두가 검은 색 :

당신이 볼 수 있듯이

enter image description here

, 정상 페이지입니다. 빠른 설정을 사용하고 창 크기를 조정하기 때문에 너무 아름답지는 않지만 그래픽 위주를 중앙 위젯으로 설정하면 더 아름답습니다.

0

응답 해 주셔서 감사합니다.

나는 범인 mGraphicsWebView-> setUrl입니다 (QUrl ("https://www.google.co.in/")) 내가 찾은 솔루션을 시도하고 또한 윈도우 에서 응용 프로그램을 실행하는 동안 흰색 화면을 관찰; 이것은 장면의 다른 모든 위젯을 차단합니다. 그래서 singleShot 타이머를 추가하고 그 아래에이 문장을 유지했습니다. // QTimer :: singleShot (100, this, SLOT (loadUrl())); 그럼 잘 작동합니다.

더 좋은 아이디어가 있다면 알려주십시오.

+0

당신은 코멘트에 그런 것을 써야합니다, 나는 당신의 대답에 대해 어떤 통보도받지 못했습니다. 나는이 질문을보고 당신이 쓴 것을 보았습니다. 내 컴퓨터에서 setUrl이이 일을하는 이유는 모르겠지만 모든 것이 정상적으로 작동합니다. 그러나 귀하의 경우에는이 특정 사안을 사용하므로 다른 해결책이 없습니다. 어쨌든, singleshot은 아주 나쁜 것이 아닙니다. 그러나 물론 할 수있을 때 yopu는 이것을 피해야합니다. – Chernobyl