Unsolved Pie Menu Simple Example
-
Hi,
can someone please help me fix this error message:
Starte C:\Users\Rick\Documents\build-Custom-Desktop_Qt_5_10_0_MSVC2017_64bit-Debug\debug\Custom.exe...
QML debugging is enabled. Only use this in a safe environment.
QQmlApplicationEngine failed to load component
qrc:/main.qml:15 Cannot assign object to list property "menuItems"main.qml:
import QtQuick 2.9 import QtQuick.Controls 2.2 import QtQuick.Window 2.2 import QtQuick.Extras 1.4 Window { visible: true width: 640 height: 480 title: qsTr("Hello World") PieMenu { id: pieMenu MenuItem { text: "Action 1" onTriggered: print("Action 1") } MenuItem { text: "Action 2" onTriggered: print("Action 2") } MenuItem { text: "Action 3" onTriggered: print("Action 3") } } }
Examle from: https://doc.qt.io/archives/qt-5.10/qml-qtquick-extras-piemenu.html#populating-the-menu
# depend on your compiler). Please consult the documentation of the # deprecated API in order to know how to port your code away from it. DEFINES += QT_DEPRECATED_WARNINGS # You can also make your code fail to compile if you use deprecated APIs. # In order to do so, uncomment the following line. # You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 SOURCES += \ main.cpp RESOURCES += qml.qrc # Additional import path used to resolve QML modules in Qt Creator's code model QML_IMPORT_PATH = # Additional import path used to resolve QML modules just for Qt Quick Designer QML_DESIGNER_IMPORT_PATH = # Default rules for deployment. qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target
main.cpp:
#include <QGuiApplication> #include <QQmlApplicationEngine> int main(int argc, char *argv[]) { QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QGuiApplication app(argc, argv); QQmlApplicationEngine engine; engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); if (engine.rootObjects().isEmpty()) return -1; return app.exec(); }
After 2 hours I still couldn't fix it although it is a simple example.
System: Windows 10 x64, MSVC2017, Qt 5.10.0
Thank you all and sorry for this beginner question.
Greetings,
Rick
PS: I also tried QML lists ([MenuItem{...}, MenuItem{...}]) and repeaters. Same error message.
-
The problem is that MenuItem is member of QtQuick.Controls 1.* module and you are importing QtQuick.control 2.2.
https://doc.qt.io/archives/qt-5.10/qml-qtquick-controls-menuitem.html
The below code solve your problem:
import QtQuick 2.9 //import QtQuick.Controls 2.2 import QtQuick.Controls 1.4 import QtQuick.Window 2.2 import QtQuick.Extras 1.4