I think you also have to load QML module in PRO file: MenuBar.pro =========== QT += quick qml
Best regards Fabrice Mousset Von: Interest <interest-boun...@qt-project.org> Im Auftrag von Nicholas Yue Gesendet: Donnerstag, 3. Juni 2021 06:09 An: Tony Rietwyk <t...@rightsoft.com.au> Cc: interest@qt-project.org Betreff: Re: [Interest] QML MenuBar : works with PySide2 but not c++ ? I copied the qml loading code from another working example, I was just testing a change in the QML content. I'd have to dig further about the lambda MenuBar.pro =========== QT += quick CONFIG += c++11 # The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # depend on your compiler). Refer to the documentation for the # deprecated API to know how to port your code away from it. DEFINES += QT_DEPRECATED_WARNINGS # You can also make your code fail to compile if it uses 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 += main.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.qrc ======= <RCC> <qresource prefix="/"> <file>MenuBar.qml</file> </qresource> </RCC> On Wed, 2 Jun 2021 at 20:36, Tony Rietwyk <t...@rightsoft.com.au<mailto:t...@rightsoft.com.au>> wrote: Hi Nicholas, The short answer is because your C++ is doing completely different things to the python code. :O) I'm not sure about using QML. Have you included the qml file as a resource correctly to access via qrc:? You aren't checking the result of the engine.load. Also, why is the lambda exiting the application when the objectCreated matches the url? Have run the Qt QML examples? How is your C++ code different to those? Hope that helps, Tony On 3/06/2021 11:33 am, Nicholas Yue wrote: Hi, I am learning about QML. I would like to find out why the PySide2 loading of the QML file results in a visible window but the C++ one does not. The compiled application runs but no window is displayed. MenuBar.qml =========== import QtQuick 2.4 import QtQuick.Controls 2.13 ApplicationWindow { visible: true width: 720 height: 480 title: "simple window" menuBar: MenuBar{ Menu{ title: "Menu1" } Menu{ title: "Menu2" } Menu{ title: "&Menu3" } } } main.cpp ======== #include <QGuiApplication> #include <QQmlApplicationEngine> int main(int argc, char *argv[]) { QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QGuiApplication app(argc, argv); QQmlApplicationEngine engine; const QUrl url(QStringLiteral("qrc:/MenuBar.qml")); QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, &app, [url](QObject *obj, const QUrl &objUrl) { if (!obj && url == objUrl) QCoreApplication::exit(-1); }, Qt::QueuedConnection); engine.load(url); return app.exec(); } main.py ======= import sys from PySide2 import QtCore, QtGui, QtQml if __name__ == '__main__': QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling) app = QtGui.QGuiApplication(sys.argv) engine = QtQml.QQmlApplicationEngine() url = QtCore.QUrl.fromLocalFile('MenuBar.qml') engine.load(url) if not engine.rootObjects(): sys.exit(-1) sys.exit(app.exec_()) -- Nicholas Yue Graphics - Arnold, Alembic, RenderMan, OpenGL, HDF5 Custom Dev - C++ porting, OSX, Linux, Windows http://au.linkedin.com/in/nicholasyue https://vimeo.com/channels/naiadtools _______________________________________________ Interest mailing list Interest@qt-project.org<mailto:Interest@qt-project.org> https://lists.qt-project.org/listinfo/interest _______________________________________________ Interest mailing list Interest@qt-project.org<mailto:Interest@qt-project.org> https://lists.qt-project.org/listinfo/interest -- Nicholas Yue Graphics - Arnold, Alembic, RenderMan, OpenGL, HDF5 Custom Dev - C++ porting, OSX, Linux, Windows http://au.linkedin.com/in/nicholasyue https://vimeo.com/channels/naiadtools
_______________________________________________ Interest mailing list Interest@qt-project.org https://lists.qt-project.org/listinfo/interest