Home / Programmazione / C - C++ / Usare le MenuBar in QML
Mattepuffo

Usare le MenuBar in QML

Usare le MenuBar in QML

QML consente di scrivere applicazioni Qt usando un linguaggio simile a Javascript, misto alle classi C++ del framework.

Molto interessante, soprattutto per chi conosce bene Javascript.

Oggi vediamo come usare il componente MenuBar in una applicazione Qt Quick.

Una volta creato un progetto Qt Quick Application con Qt Creator, ci ritroviamo il file main.qml con un oggetto Rectangle.

Per usare le MenuBar dobbiamo però passare a ApplicationWindow, e questo comporta qualche modifica al progetto iniziale.

Prima di tutto il main.qml diventerà così:

import QtQuick 2.0
import QtQuick.Controls 1.0

ApplicationWindow {
    title: "App"
    visible: true
    width: 600
    height: 600

    menuBar: MenuBar {
        Menu {
            title: "File"
            MenuItem { text: "Open..." }
            MenuItem { text: "Close" }
        }

        Menu {
            title: "Edit"
            MenuItem { text: "Cut" }
            MenuItem { text: "Copy" }
            MenuItem { text: "Paste" }
        }
    }

}

Bene, adesso dobbiamo modificare il metodo main nel file main.cpp, che dovrà diventare così (salvate il contenuto dell'originale e mettete questo):

/*#include <QtGui/QGuiApplication>
#include "qtquick2applicationviewer.h"

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);
    QtQuick2ApplicationViewer viewer;
    viewer.setMainQmlFile(QStringLiteral("qml/Test/main.qml"));
    viewer.showExpanded();
    return app.exec();
}*/

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQuickWindow>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);
    QQmlApplicationEngine engine;
    engine.load(QUrl("qml/Test/main.qml"));
    QObject *topLevel = engine.rootObjects().value(0);
    QQuickWindow *window = qobject_cast<QQuickWindow *>(topLevel);
    window->show();
    return app.exec();
}

Vi ho lasciato la parte originale commentata sopra.

A questo punto provate ad avviare l'applicazione.

Enjoy!