2013-08-29 4 views
6

주 메인 윈도우의 qml GUI가 있습니다. 방금 Qt quick2 응용 프로그램을 만들고 메인 윈도우의 qml GUI를 복사하여 main.qml에 붙여 넣었습니다. 나는 응용 프로그램을 실행하면 빈 창을 표시하고 다음 내 QML 로그입니다 :qml 및 C++ with qt quick 2 application

QML debugging is enabled. Only use this in a safe environment. 
Both point size and pixel size set. Using pixel size. 
Both point size and pixel size set. Using pixel size. 
Both point size and pixel size set. Using pixel size. 
file:///home/khajvah/build-convQML-Desktop_Qt_5_1_0_GCC_64bit-Debug/qml/convQML/main.qml:99:9: QML Text: Cannot anchor to an item that isn't a parent or sibling. 
file:///home/khajvah/build-convQML-Desktop_Qt_5_1_0_GCC_64bit-Debug/qml/convQML/main.qml:31:9: QML BasicButton: Cannot anchor to an item that isn't a parent or sibling. 
file:///home/khajvah/Qt5.1.0/5.1.0/gcc_64/qml/QtQuick/Controls/Styles/Base/ToolButtonStyle.qml:73:9: QML Image: Cannot open: file:///home/khajvah/build-convQML-Desktop_Qt_5_1_0_GCC_64bit-Debug/logout-512.png 
file:///home/khajvah/Qt5.1.0/5.1.0/gcc_64/qml/QtQuick/Controls/Styles/Base/ToolButtonStyle.qml:73:9: QML Image: Cannot open: file:///home/khajvah/build-convQML-Desktop_Qt_5_1_0_GCC_64bit-Debug/console.ico 
file:///home/khajvah/Qt5.1.0/5.1.0/gcc_64/qml/QtQuick/Controls/Styles/Base/ToolButtonStyle.qml:73:9: QML Image: Cannot open: file:///home/khajvah/build-convQML-Desktop_Qt_5_1_0_GCC_64bit-Debug/mod.png 
QQuickView only supports loading of root objects that derive from QQuickItem. 

If your example is using QML 2, (such as qmlscene) and the .qml file you 
loaded has 'import QtQuick 1.0' or 'import Qt 4.7', this error will occur. 

To load files with 'import QtQuick 1.0' or 'import Qt 4.7', use the 
QDeclarativeView class in the Qt Quick 1 module. 

는 IS 다음 내 QML 파일 :

import QtQuick 2.1 
import QtQuick.Controls 1.0 
import QtQuick.Window 2.0 

ApplicationWindow { 
    id: applicationwindow1 
    title: qsTr("Converter") 
    width: 500 

    //height: 600 




// menuBar: MenuBar { 

    // } 

    ToolBar { 

     id: tool_bars 
     x: 0 
     y: 0 
     width: applicationwindow1.width 
     height: 39 
     clip: true 
     smooth: false 
     opacity: 1 
     transformOrigin: Item.Center 

     ToolButton { 

      id: modify 

      y: 1 
      scale: 1 
      anchors.right: tool_bars.left 

      iconSource: "../../mod.png" 

     } 

     ToolButton { 

      id: consolebtn 
      x: 32 
      y: 1 
      scale: 1 
      anchors.left: modify.right 
      anchors.leftMargin: 6 
      iconSource: "../../console.ico" 


     } 


     ToolButton { 

      id: exit; 
      x: 75 
      y: 1 
      scale: 1 
      anchors.left: consolebtn.right; 
      anchors.leftMargin: 6 

      iconSource: "../../logout-512.png" 

     } 

    } 

    GroupBox { 
     id: group_box1 
     x: 0 
     y: 30 
     width: 500 
     height: 136 
     anchors.top: tool_bars.bottom 
     anchors.topMargin: -9 
     anchors.left: parent.left 
     anchors.leftMargin: 0 
     anchors.right: parent.right 
     anchors.rightMargin: 0 

     ComboBox { 
      id: typebox 



      anchors.left: text1.right 
      anchors.leftMargin: 5 

      width: 70 
      height: 23 
      anchors.top: parent.top 
      anchors.topMargin: 37 
     } 

     Text { 
      id: text1 

      anchors.left: group_box1.left 
      anchors.leftMargin: 5 

      text: "Type:" 
      anchors.top: parent.top 
      anchors.topMargin: 41 
      font.italic: true 
      style: Text.Normal 
      font.pointSize: 12 
      font.pixelSize: 12 
     } 


     ComboBox { 

      id: frombox 
      x: 205 


      anchors.left: text2.right 
      anchors.leftMargin: 8 

      width: 70 
      height: 23 
      anchors.top: parent.top 
      anchors.topMargin: 37 
     } 

     Text { 
      id: text2 
      x: 189 


      anchors.leftMargin: 20 

      text: "From:" 
      anchors.top: parent.top 
      anchors.topMargin: 41 
      anchors.horizontalCenterOffset: -32 
      anchors.horizontalCenter: parent.horizontalCenter 
      font.italic: true 
      style: Text.Normal 
      font.pointSize: 12 
      font.pixelSize: 12 
     } 


     ComboBox { 
      id: tobox 
      x: 412 


      anchors.right: parent.right 
      anchors.rightMargin: 5 

      width: 70 
      height: 23 
      anchors.top: parent.top 
      anchors.topMargin: 37 
     } 

     Text { 
      id: text3 
      x: 0 


      text: "To:" 
      anchors.top: parent.top 
      anchors.topMargin: 41 
      anchors.right: tobox.left 
      anchors.rightMargin: 5 
      font.italic: true 
      style: Text.Normal 
      font.pointSize: 12 
      font.pixelSize: 12 
     } 

     TextField { 
      id: text_field1 
      y: 78 
      width: 197 
      height: 22 
      anchors.bottom: parent.bottom 
      anchors.bottomMargin: 15 
      anchors.left: parent.left 
      anchors.leftMargin: 5 
      placeholderText: "Input" 
     } 

     TextField { 
      id: text_field2 
      x: 293 
      y: 78 
      width: 186 
      height: 22 
      anchors.bottom: parent.bottom 
      anchors.bottomMargin: 15 
      anchors.right: parent.right 
      anchors.rightMargin: 5 
      readOnly: true 
      placeholderText: "Result" 
     } 


    } 

    TextArea { 
     id: text_area1 
     x: 0 
     y: 178 
     width: 500 
     height: 80 
     anchors.left: parent.left 
     anchors.leftMargin: 0 
     anchors.right: parent.right 
     anchors.rightMargin: 0 
     anchors.top: group_box1.bottom 
     anchors.topMargin: 12 
     anchors.bottom: addlogbtn.top 
     anchors.bottomMargin: 5 
    } 

    Button { 

     id: addlogbtn 
     x: 7 
     y: 212 
     width: 110 
     height: 23 
     text: "Add to Log" 

     anchors.bottom: parent.bottom 
     anchors.bottomMargin: 5 
     anchors.left: parent.left 
     anchors.leftMargin: 7 


    } 

    Button { 
     id: button1 
     x: 195 
     y: 212 
     width: 118 
     height: 23 
     text: "Export" 
     anchors.horizontalCenter: parent.horizontalCenter 
     anchors.bottom: parent.bottom 
     anchors.bottomMargin: 5 
    } 

    Button { 
     id: button2 
     x: 359 
     y: 212 
     width: 117 
     height: 23 
     text: "Clear" 
     anchors.right: parent.right 
     anchors.rightMargin: 7 
     anchors.bottom: parent.bottom 
     anchors.bottomMargin: 5 
    } 


} 

자동으로 생성 MAIN.CPP :

#include <QtGui/QGuiApplication> 
#include "qtquick2applicationviewer.h" 

int main(int argc, char *argv[]) 
{ 
    QGuiApplication app(argc, argv); 

    QtQuick2ApplicationViewer viewer; 
    viewer.setMainQmlFile(QStringLiteral("qml/convQML/main.qml")); 
    viewer.showExpanded(); 

    return app.exec(); 
} 

이것이 작동하지 않는 이유는 무엇입니까? 나는 qml을 처음 사용하기 때문에 실제로 어떻게 C++에 연결되는지 혼란 스럽다.

답변

15

확실히 ApplicationWindow을 사용할 수 있지만 QQmlApplicationEngine을 사용해야하며 최상위 창을 명시 적으로 표시해야합니다. 전체 예제는 another answer입니다. 아래는 단지 당신을 위해 일 해야하는 main.cpp 파일입니다.

#include <QGuiApplication> 
#include <QQmlApplicationEngine> 
#include <QQuickWindow> 

int main(int argc, char *argv[]) 
{ 
    QGuiApplication app(argc, argv); 
    QQmlApplicationEngine engine; 
    engine.load(QUrl("qml/convQML/main.qml")); 
    QObject *topLevel = engine.rootObjects().value(0); 
    QQuickWindow *window = qobject_cast<QQuickWindow *>(topLevel); 
    window->show(); 
    return app.exec(); 
}