2017-11-20 9 views
0

qt/QML을 사용하여 사용자 인터페이스를 개발 중이므로 애플리케이션 시작시 스플래시 화면 이미지를 표시해야합니다. iMX6 마이크로 프로세서가 장착 된 장치에서 응용 프로그램을 실행하고 있습니다. QtSplashscreen 라이브러리를 사용했지만 다음과 같은 오류 메시지가 나타납니다. EGLFS : OpenGL 창을 다른 사람과 섞을 수 없습니다.qt에서 EGFLS를 사용하여 프로젝트에 스플래시 스크린을 삽입하는 방법

2 개의 창을 동시에 열 수 없다는 것을 알고 있습니까? 누군가 도움이 될 수 있습니까?

OpenGL and Qt Quick 2 applications can only have one fullscreen window existing at a time. Trying to create another OpenGL window, or trying to mix an OpenGL window with a raster one will display the above message and abort the application.

QSplashScreen 스플래시보기를 표시하기 위해 다른 창을 사용하여 문제에 대한

+0

여기서 'QtSplashScreen'라이브러리를 어디에서 찾을 수 있습니까? 스플래시 화면을 일반적인 qml 파일로 구현할 수 없습니까? – m7913d

+0

사용중인 Qt의 버전을 지정하십시오. – derM

+0

Qt를 사용하고 있습니다. 5.8 – sebba23

답변

0

question를 참조하십시오. 따라서 이것은 직접적인 해결책이 아닙니다. QWidget을 QQuickItem에 내장하여 QtQuick2 컨트롤 컴포넌트로 사용할 수 있습니다.

QML 구성 요소를 사용하고 Loader으로로드하는 것이 더 빠른 해결책입니다. Qt 예제 저장소를 살펴볼 수 있는데,이 file이 좋은 예입니다.

여기에 쉬운 예가 나와 있습니다.

Loader { 
    id: splashLoader 
    anchors.fill: parent 
    source: "SplashScreen.qml" 
    asynchronous: false 
    visible: true 

    onStatusChanged: { 
     if (status === Loader.Ready) { 
      appLoader.setSource("App.qml"); 
     } 
    } 
} 

Connections { 
    target: splashLoader.item 
    onReadyToGo: { 
     appLoader.visible = true 
     appLoader.item.init() 
     splashLoader.visible = false 
     splashLoader.setSource("") 
     appLoader.item.forceActiveFocus(); 
    } 
} 

Loader { 
    id: appLoader 
    anchors.fill: parent 
    visible: false 
    asynchronous: true 
    onStatusChanged: { 
     if (status === Loader.Ready) 
      splashLoader.item.appReady() 
     if (status === Loader.Error) 
      splashLoader.item.errorInLoadingApp(); 
    } 
} 
+0

QQuickItem에 QWidget을 어떻게 포함시킬 수 있습니까? 당신도 그것에 대한 모범이 있습니까? – derM

+0

제 생각에 QWidget을 QQuick2에 혼합 할 수 없습니다. 그래도 Qt5가 사용된다면 https://stackoverflow.com/questions/13014415/qt5-embed-qwidget-object-in-qml- 물론 그걸 유지할 수 있습니다. – derM

관련 문제