Работайте над ошибкой QString для мобильных устройств

Я пытаюсь запустить простую кнопку на QML Android с C ++.

Программа компилируется и создается с использованием QString / QQmlEngine . Когда я пытаюсь запустить его, он дает следующее сообщение:

kernel/qcoreapplication.cpp:418 (QCoreApplicationPrivate::QCoreApplicationPrivate(int&, char**, uint)): WARNING: QApplication was not created in the main() thread. 

Что, по-видимому, является нормальным, как указано здесь: QApplication In Non-Main Thread . Затем он выдает сообщение:

 qrc:///calculator.qml:33 ((null)): qrc:///calculator.qml:33:15: Unable to assign [undefined] to QString 

Я читал, что это неподтвержденная ошибка, приведенная здесь: Qt Project – QTMOBILITY-1735 . Подобные проблемы, связанные с ошибками, также влияют на отсутствие поддержки буфера Stencil, ожидание ошибок рендеринга , поскольку я разрабатываю для Tablet. Если это действительно связанная ошибка, которая, кажется, имеет место, есть ли какой-либо возможный способ ее устранения? Должен быть какой-то возможный взлом, чтобы справиться с этим. В принципе, это блокирует почти все, чтобы работать.

Код прост и мал, поскольку я использую его как фреймворк, который просто запускает кнопку на целевом устройстве. Вот короткая программа, которую я использую, чтобы попытаться заставить все начать работу.

main.cpp

 #include <QtGui/QGuiApplication> #include <QtQml/QQmlApplicationEngine> #include <QtQml/QQmlEngine> int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); QQmlApplicationEngine engine(QUrl("qrc:///calculator.qml")); return app.exec(); } 

calculator.qml

 import QtQuick 2.0 import QtSensors 5.0 import QtQuick.Controls 1.0 Rectangle { id: button property bool checked: false property alias text : buttonText.text Accessible.name: text Accessible.description: "This button does " + text Accessible.role: Accessible.Button function accessiblePressAction() { button.clicked() } signal clicked width: buttonText.width + 20 height: 30 gradient: Gradient { GradientStop { position: 0.00; color: "#b0c4de"; } } radius: 5 antialiasing: true Text { id: buttonText text: parent.description anchors.centerIn: parent font.pixelSize: parent.height * .5 style: Text.Sunken color: "white" styleColor: "black" } MouseArea { id: mouseArea anchors.fill: parent onClicked: parent.clicked() } Keys.onSpacePressed: clicked() } 

calculator.pro

 QT += qml quick sensors svg xml OTHER_FILES += \ calculator.qml RESOURCES += \ calculator.qrc SOURCES += \ calculator.cpp 

Надеюсь, кто-то может согласиться с некоторым предложением.

Ваш файл calculator.pro в текущей версии, по-видимому, ошибочен. Вместо этого он должен выглядеть примерно так:

 # Add more folders to ship with the application, here folder_01.source = qml/calculator folder_01.target = qml DEPLOYMENTFOLDERS = folder_01 QT += qml quick sensors svg xml # Additional import path used to resolve QML modules in Creator's code model QML_IMPORT_PATH = # The .cpp file which was generated for your project. Feel free to hack it. SOURCES += main.cpp # Installation path # target.path = # Please do not modify the following two lines. Required for deployment. include(qtquick2applicationviewer/qtquick2applicationviewer.pri) qtcAddDeployment() в # Add more folders to ship with the application, here folder_01.source = qml/calculator folder_01.target = qml DEPLOYMENTFOLDERS = folder_01 QT += qml quick sensors svg xml # Additional import path used to resolve QML modules in Creator's code model QML_IMPORT_PATH = # The .cpp file which was generated for your project. Feel free to hack it. SOURCES += main.cpp # Installation path # target.path = # Please do not modify the following two lines. Required for deployment. include(qtquick2applicationviewer/qtquick2applicationviewer.pri) qtcAddDeployment() 

Файл qtquick2applicationviewer будет создан автоматически при создании нового проекта. Итак, вы должны включить его в свой main.cpp:

 #include "qtquick2applicationviewer.h" 

В частности, сообщение « Невозможно назначить QString для QQuickItem », похоже, это проблема с определением синтаксиса или параметра из вашего qml-файла, поскольку вы, возможно, захотите посмотреть здесь .

Это должно быть причиной, по которой у вас возникают проблемы с вашим проектом.