2013-08-29 16 views
6

メインウィンドウのqml GUIがあります。 qt quick2アプリケーションを作成し、メインウィンドウのqml GUIをコピーしてmain.qmlに貼り付けました。私は、アプリケーションを実行すると、空白のウィンドウが表示され、次は私のQMLのログです:qmlとC++ qt quick 2アプリケーション

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. 

され、次の私の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(); 
} 
関連する問題