不显示矩形元素

Vla*_*mír 3 qt qml

我想使用Rectangleelement 在Qt 5.2.1(msvc2012)中创建一个Qt Quick Application项目.这是我的main.qml:

import QtQuick 2.0

Rectangle {
    width: 100
    height: 100
    color: "red"
}
Run Code Online (Sandbox Code Playgroud)

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

启用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();
}
Run Code Online (Sandbox Code Playgroud)

这是我的专业档案:

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)
Run Code Online (Sandbox Code Playgroud)

这是我的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)
Run Code Online (Sandbox Code Playgroud)

这是编译输出:

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"...../ 24 / RT_MANIFEST /"debug\521msvc20123.exe.embed.manifest"> debug\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 debug\521msvc20123.exe.embed.manifest debug\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:\ Users\Vladimir\AppData\Local\Temp\521msvc20123.exe.7128.2875.jom如果存在debug\521msvc20123 .exe_manifest.bak fc/b debug\521msvc20123.exe.embed.manifest debug\521msvc20123.exe_manifest.bak> NUL || del 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:\ Users\Vladimir\AppData\Local\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拒绝显示qml代码 不是关于Rectangle元素,它关于ApplicationWindow元素中缺少的可见属性.

Tar*_*rod 13

根据文件,

与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"
    }
}
Run Code Online (Sandbox Code Playgroud)

当然,您也可以使用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();
}
Run Code Online (Sandbox Code Playgroud)

main.qml

import QtQuick 2.0

Rectangle {
    width: 100
    height: 100
    color: "red"
}
Run Code Online (Sandbox Code Playgroud)