2012-12-09 4 views
3

약 한 달 전에 버려진 Qt 앱 개발을 시작했습니다. 거의 완료되었지만 해결할 수없는 버그가 하나 있습니다. 앱을 시뮬레이션 할 때 두 가지 모두 세로로 잘립니다. 그러나 노키아 벨 리프레시 (Qt 4.8)를 실행하는 Nokia E7-00에 앱을 설치하면 가로 모드가 중단됩니다. 이 문제가 해결 되었습니까? 유사한 문제를 설명했지만 실제 솔루션을 찾지 못한 항목이 하나 있습니다. MAIN.CPP에 QmlApplicationViewer에 관한가로 모드가 잘못되었거나 잘못 표시되었습니다.

코드 : main.qml

import QtQuick 1.1 
import com.nokia.symbian 1.1 
import com.nokia.extras 1.1 
import "pages" 
import "components" 
import "js/utils.js" as Utils 
import "js/storage.js" as Storage 
import QtQuick 1.0 

Window{ 
    id: window 


    property string __schemaIdentification: "2" 

    Component.onCompleted: { 
     Storage.initialize() 
    } 

    // 
    // Window structure 
    // 

    PageStackWindow { 
     id: pagestackwindow1 
     initialPage: mainPage 
     showStatusBar: true 
     showToolBar: true 


     onRotationChanged: console.log("rotated!") 
     Page { 
      id: mainPage 
      // orientationLock: PageOrientation.LockPortrait 
      tools: toolBarLayout 

      TabGroup { 
       id: tabGroup 
       currentTab: liveboardStack 
       anchors.fill: parent 

       PageStack { 
        id: liveboardStack 
        Component.onCompleted: liveboardStack.push(liveboardPage) 
       } 

       PageStack { 
        id: travelStack 
        Component.onCompleted: travelStack.push(travelPage) 
       } 


      } 
     } 

    } 


    // 
    // Toolbar 
    // 

    ToolBarLayout { 
     id: toolBarLayout 

     // Back buton 
     ToolButton { 
      property bool closeButton: tabGroup.currentTab.depth <= 1 
      flat: true 
      iconSource: closeButton ? "icons/close.svg" : "toolbar-back" 
      onClicked: closeButton ? Qt.quit() : tabGroup.currentTab.pop(); 
     } 

     // Tab bar 

     ButtonRow { 
      TabButton { id: tabBtnLiveboard; tab: liveboardStack; iconSource: "toolbar-list" } 
      TabButton {id:tabBtnTravel;tab: travelStack; iconSource: "toolbar-search" } 
     } 

     // Menu 
     ToolButton { 
      iconSource: "toolbar-menu" 
      onClicked: { 
       if (!window.menu) 
        window.menu = Utils.loadObjectByComponent(menuComponent, window) 
       window.menu.open() 
      } 
     } 

    } 


    // 
    // Objects 
    // 

    // Statically loaded objects 
    property variant liveboardPage: LiveboardPage {} 
    property variant travelPage: TravelPage {} 

    // Dynamically loaded objects 
    property variant aboutDialog 

    // In-line defined menu component 
    property variant menu 
    Component { 
     id: menuComponent 

     Menu { 
      id: menu 
      content: MenuLayout { 
       // About 
       MenuItem { 
        text: qsTr("About") 
        onClicked: { 
         if (!aboutDialog) 
          aboutDialog = Utils.loadObjectByPath("components/AboutDialog.qml", menu) 
         aboutDialog.open() 
        } 
       } 

       // Quit 
       MenuItem { 
        text: qsTr("Quit") 
        onClicked: Qt.quit() 
       } 
      } 
     } 
    } 

    Text { 
     id: statustext 
     x: 2 
     y: 2 
     width: 230 
     height: 22 
     color: "#ffffff" 
     text: qsTr("BeTrains") 
     font.pixelSize: 20 
    } 
} 

에서

QScopedPointer<QmlApplicationViewer> tQmlApplicationViewer(QmlApplicationViewer::create()); 
tQmlApplicationViewer->setResizeMode(QDeclarativeView::SizeRootObjectToView); 

// Load the QML entrypoint 
tQmlApplicationViewer->setMainQmlFile(QLatin1String("qml/BeTrains/main.qml")); 

tQmlApplicationViewer->showFullScreen(); 

코드 마지막 텍스트 객체는 테스트 목적으로, 그리고 그것을 정상적으로 회전 .. . 문제를 보여주는 이미지 :

(이미지를 포함 할 수 없으므로 여기에 링크가 있습니다 : http://i.stack.imgur.com/LXsxe.jpg)

시뮬레이터 결과는 오른쪽에있는 내 E7의 스크린 샷입니다. 문제는 빨간색 원으로 둘러 쌉니다.

+1

원인입니다하지만 main.qml 이상한 무엇인지 확실하지 ... PageStackWindow 이미입니다 (같은 @Dickson 댓글을 달았 답변) 창, 왜 다른 창으로 감싼거야? Window를 지우고 PageStackWindow를 main.qml의 최상위 레벨로 사용하려고 시도하십시오. – Dickson

+0

@Dickson 제가 시도 했었습니다. 그리고 약간의 조정으로 그런 식으로 고쳐주었습니다! 당신의 도움을 주셔서 감사합니다! 더 이상이 사실을 더 이상 알지 못했습니다. 왜냐하면 항상 앱을 계속 사용하고 원래 개발자가이 요소를 필요로했기 때문입니다. 완료되었습니다. btw,이 문제는 해결되었지만 답변을 답변으로 표시 할 수는 없습니까? – Bertware

+0

@Bertware 대답이 아니라 주석이기 때문에 대답을 수락 할 수 없습니다. Dickson이 대답으로 복사하여 붙여 넣기해야합니다. 답을 직접 쓰고 대답을 수락하면 답이 표시된 질문이 표시됩니다. – hyde

답변

0

원인이 무엇인지 잘 모르지만 main.qml이 이상합니다 ... PageStackWindow가 이미 다른 창으로 포장 한 이유는 무엇입니까? 창을 제거하고 main.qm에 최고 수준으로 PageStackWindow 사용하려고

관련 문제