不显示矩形元素

时间:2015-10-01 20:31:05

标签: qt qml

我想使用Rectangle元素在Qt 5.2.1(msvc2012)中创建一个Qt快速应用程序项目。 这是我的main.qml

import QtQuick 2.0

Rectangle {
    width: 100
    height: 100
    color: "red"
}

当我运行这个项目时,构建永远不会完成,我看不到任何应用程序窗口。 应用程序输出保持在:

  

启用QML调试。只能在安全的环境中使用它。

这是我的main.cpp

#include <QApplication>
#include <QQmlApplicationEngine>

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

    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:///main.qml")));

    return app.exec();
}

这是我的专业档案:

TEMPLATE = app

QT += qml quick widgets

SOURCES += main.cpp

RESOURCES += qml.qrc

# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =

# Default rules for deployment.
include(deployment.pri)

这是我的deployment.pri:

android-no-sdk {
    target.path = /data/user/qt
    export(target.path)
    INSTALLS += target
} else:android {
    x86 {
        target.path = /libs/x86
    } else: armeabi-v7a {
        target.path = /libs/armeabi-v7a
    } else {
        target.path = /libs/armeabi
    }
    export(target.path)
    INSTALLS += target
} else:unix {
    isEmpty(target.path) {
        qnx {
            target.path = /tmp/$${TARGET}/bin
        } else {
            target.path = /opt/$${TARGET}/bin
        }
        export(target.path)
    }
    INSTALLS += target
}

export(INSTALLS)

这是编译输出:

  

22:21:25:为项目521msvc20123 ... 22:21:25运行步骤:   配置不变,跳过qmake步骤。 22:21:25:开始:   “C:\ qtcreator-3.1.0 \ bin \ jom.exe”C:\ qtcreator-3.1.0 \ bin \ jom.exe -f   Makefile.Debug C:\ QtDva \ 5.2.1 \ msvc2012 \ bin \ rcc.exe -name qml   .. \ 521msvc20123 \ qml.qrc -o debug \ qrc_qml.cpp cl -c -nologo -Zm200   -Zc:wchar_t -Zi -MDd -GR -W3 -w34100 -w34189 -EHsc /Fddebug\521msvc20123.pdb -DUNICODE -DWIN32 -DQT_QML_DEBUG   -DQT_DECLARATIVE_DEBUG -DQT_QUICK_LIB -DQT_QML_LIB -DQT_WIDGETS_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_OPENGL_ES_2 -DQT_OPENGL_ES_2_ANGLE -I“........ \ QtDva \ 5.2.1 \ msvc2012 \ include”-I“....... 。\ QtDva \ 5.2.1 \ msvc2012 \ include \ QtQuick“-I”........ \ QtDva \ 5.2.1 \ msvc2012 \ include \ QtQml“-I”........ \ QtDva \ 5.2.1 \ msvc2012 \ include \ QtWidgets“-I”........ \ QtDva \ 5.2.1 \ msvc2012 \ include \ QtNetwork“-I”........ \ QtDva \ 5.2.1 \ msvc2012 \ include \ QtGui“-I”........ \ QtDva \ 5.2.1 \ msvc2012 \ include \ QtANGLE“-I”........ \ QtDva \ 5.2。 1 \ msvc2012 \ include \ QtCore“-I”debug“-I”。“ -I“........ \ QtDva \ 5.2.1 \ msvc2012 \ mkspecs \ win32-msvc2012”-Fodebug \ @C:\ Users \ Vladimir \ AppData \ Local \ Temp \ qrc_qml.obj.7128.454.jom   qrc_qml.cpp echo 1 / * CREATEPROCESS_MANIFEST_RESOURCE_ID / 24 /   RT_MANIFEST /   “调试\ 521msvc20123.exe.embed.manifest” &GT;调试\ 521msvc20123.exe_manifest.rc     如果不存在debug \ 521msvc20123.exe(如果存在)   debug \ 521msvc20123.exe.embed.manifest del   debug \ 521msvc20123.exe.embed.manifest(如果存在)   debug \ 521msvc20123.exe.embed.manifest copy / Y.   调试\ 521msvc20123.exe.embed.manifest   调试\ 521msvc20123.exe_manifest.bak           已复制1个文件。 link / NOLOGO / DYNAMICBASE / NXCOMPAT / DEBUG / SUBSYSTEM:WINDOWS“/ MANIFESTDEPENDENCY:type ='win32'   name ='Microsoft.Windows.Common-Controls'version ='6.0.0.0'   publicKeyToken ='6595b64144ccf1df'language =''   processorArchitecture =''“/ MANIFEST   /MANIFESTFILE:debug\521msvc20123.exe.embed.manifest   /OUT:debug\521msvc20123.exe   @C:\用户\弗拉基米尔\应用程序数据\本地的\ Temp \ 521msvc20123.exe.7128.2875.jom     如果存在debug \ 521msvc20123.exe_manifest.bak fc / b   调试\ 521msvc20123.exe.embed.manifest   debug \ 521msvc20123.exe_manifest.bak&gt; NUL ||德尔   debug \ 521msvc20123.exe_manifest.bak如果不存在   debug \ 521msvc20123.exe_manifest.bak rc.exe   /fodebug\521msvc20123.exe_manifest.res   debug \ 521msvc20123.exe_manifest.rc如果不存在   debug \ 521msvc20123.exe_manifest.bak link / NOLOGO / DYNAMICBASE   / NXCOMPAT / DEBUG / SUBSYSTEM:WINDOWS“/ MANIFESTDEPENDENCY:type ='win32'   name ='Microsoft.Windows.Common-Controls'version ='6.0.0.0'   publicKeyToken ='6595b64144ccf1df'language =''   processorArchitecture ='*'“/ MANIFEST   /MANIFESTFILE:debug\521msvc20123.exe.embed.manifest   /OUT:debug\521msvc20123.exe   @C:\用户\弗拉基米尔\应用程序数据\本地的\ Temp \ 521msvc20123.exe.7128.2891.jom     如果存在debug \ 521msvc20123.exe_manifest.bak del   debug \ 521msvc20123.exe_manifest.bak 22:21:32:这个过程   “C:\ qtcreator-3.1.0 \ bin \ jom.exe”正常退出。 22:21:32:经过   时间:00:08。

可能是什么问题?

Qt QQmlApplicationEngine refuse to display qml code 不是关于Rectangle元素,它关于ApplicationWindow元素中缺少的可见属性。

1 个答案:

答案 0 :(得分:12)

根据documentation

  

与QQuickView不同, QQmlApplicationEngine不会自动创建   根窗口。如果你使用的是Qt Quick的视觉项目,你会的   需要将它们放在窗口内。

因此,您需要将Rectangle放入Window

import QtQuick 2.0
import QtQuick.Window 2.2

Window {
    visible: true

    Rectangle {
        width: 100
        height: 100
        color: "red"
    }
}

当然,您也可以使用QQuickView代替QQmlApplicationEngine。在这种情况下,代码应该是以下代码:

<强>的main.cpp

#include <QGuiApplication>
#include <QQuickView>

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

    QQuickView engine(QUrl(QStringLiteral("qrc:/main.qml")));
    engine.show();

    return app.exec();
}

<强> main.qml

import QtQuick 2.0

Rectangle {
    width: 100
    height: 100
    color: "red"
}