2017-12-05 9 views
1

uiフォームを使用せずにQt Creator 4.3.1でQtQuickでプロジェクトを作成します。QtQuickアプリケーションを実行する

import QtQuick 2.6 
    import QtQuick.Window 2.2 

    Window { 
     visible: true 
     width: 640 
     height: 480 
     title: qsTr("Hello World") 

     MouseArea { 
      anchors.fill: parent 
      onClicked: { 
       console.log(qsTr('Clicked on background. Text: "' + textEdit.text + '"')) 
      } 
     } 

     TextEdit { 
      id: textEdit 
      text: qsTr("Enter some text...") 
      verticalAlignment: Text.AlignVCenter 
      anchors.top: parent.top 
      anchors.horizontalCenter: parent.horizontalCenter 
      anchors.topMargin: 20 
      Rectangle { 
       anchors.fill: parent 
       anchors.margins: -10 
       color: "transparent" 
       border.width: 1 
      } 
     } 
    } 

プログラムが実行され、作品: ここでは、コードmain.qmlです。 は今、私は窓を取り除くと、長方形とそれを交換したい:

import QtQuick 2.6 

Rectangle { 
    id: root 
    width: 200; height: 200; 
    color: "#ffffff" 
} 

をしかし、プログラムが起動したときに、何も起こりません、フォームは私が間違っているのは何 を開きませんか?


main.cppコード。両方の場合で同じでコード:Qtアプリケーションにおいて

#include <QGuiApplication> 
#include <QQmlApplicationEngine> 

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

    QQmlApplicationEngine engine; 
    engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); 
    if (engine.rootObjects().isEmpty()) 
     return -1; 

    return app.exec(); 
} 
+1

はあなたのmain.cppに – eyllanesc

+0

を表示私はquistionを編集しました。あなたを見て –

答えて

3

トップレベルである少なくとも1つの窓を持っている必要があり、それは、他の構成要素が配置されているウィンドウです。

、あなたのプロジェクトを作成する場合、デフォルトのmain.cppを取得する必要があります。

main.cppに

#include <QGuiApplication> 
#include <QQmlApplicationEngine> 

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

    QQmlApplicationEngine engine; 
    engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); 
    if (engine.rootObjects().isEmpty()) 
     return -1; 

    return app.exec(); 
} 

main.qml

Window { 
    visible: true 
    width: 640 
    height: 480 
    title: qsTr("Hello World") 
} 

はそれでは、分析してみましょう要素を使用し、そのドキュメントを使用します。

QQmlApplicationEngineは、単一のQMLファイルからアプリケーションをロードするための便利な方法を提供します。

[...]

QQuickViewとは異なり、QQmlApplicationEngineは、自動的にルートウィンドウを作成しません。 Qt Quickのビジュアルアイテムを使用している場合は、それらをウィンドウ内に配置する必要があります。 、QQmlApplicationEngineたちは、ウィンドウが表示されるようにしたい場合は、別の要素を使用する必要がありますので、トップレベルを作成し、推奨されているようにしませんが、オプションは2番目にWindow{}

を使用することです

あなたがアイテムを使用しているかどうかテストします。長方形は、これが唯一の成分であり、それが推奨されることQQuickViewを使用するために、トップレベルを作成することができない。

QQuickViewクラスは、Qtのクイック・ユーザ・インタフェースを表示するためのウィンドウを提供します。

[...]

だからあなたはあなたがあなたのmain.cppにに次のように使用すべき四角形表示したい場合:

メインに。 CPP

#include <QGuiApplication> 
#include <QQuickView> 

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

    QQuickView view; 
    view.setSource(QUrl(QStringLiteral("qrc:/main.qml"))); 
    view.setResizeMode(QQuickView::SizeRootObjectToView); 
    view.show(); 

    return app.exec(); 
} 

main.qml

import QtQuick 2.6 

Rectangle { 
    id: root 
    width: 200; height: 200; 
    color: "#ffffff" 
} 
関連する問題