Application de bureau plein écran avec QML

j'ai de l'expérience avec le développement d'une riche application d'interface utilisateur avec flex et AS3. Cependant, le problème est qu'il est très difficile d'utiliser la logique d'affaires c++ existante avec ces applications flex. Avec L'avènement de QML, je suis curieux de savoir s'il est possible de réutiliser la logique commerciale c++ avec QT pour de riches applications D'interface utilisateur.

je veux savoir s'il est possible de développer des applications d'interface utilisateur riches en plein écran(qui deviennent de plus en plus courantes, notamment sur les appareils mobiles) pour les Desktop. Pour example(http://blog.flexexamples.com/2007/08/07/creating-full-screen-flex-applications/) Adobe a le lecteur Flash qui peut être utilisé en mode plein écran et exécute le contenu écrit en AS3. Est-il possible d'écrire des applications similaires en utilisant QT/QML?

10
demandé sur iceman 2012-01-26 09:32:08

4 réponses

si vous souhaitez utiliser business logic écrit sur C++ et une interface utilisateur QML, vous pouvez utiliser QDeclarativeView dans votre application. C'est juste un widget Qt normal donc il a une méthode showFullScreen(). En fait, cette classe est comme "qmlviewer dans votre application".

de Sorte que vous obtiendrez quelque chose comme ceci:

#include <QtGui/QApplication>
#include <QtDeclarative/QDeclarativeView>
#include <QtCore/QUrl>

int main(int _argc, char * _argv[])
{
    QApplication app(_argc, _argv);

    QDeclarativeView view;
    view.setSource(QUrl("qrc:/MyGui.qml"));    // if your QML files are inside 
                                               // application resources

    view.showFullScreen();    // here we show our view in fullscreen

    return app.exec();
}

Vous pouvez trouver plus d'information ici.

19
répondu GooRoo 2012-01-26 21:28:54

il y a aussi une option QML-only pour passer en plein écran. Vous pouvez l'utiliser si vous n'utilisez pas QDeclarativeView mais QQmlApplicationEngine, puisque ce dernier n'hérite pas de QWidget et n'a pas la méthode showFullScreen().

import QtQuick 2.2
import QtQuick.Controls 1.1

ApplicationWindow {
    id: window
    visible: true
    visibility: "FullScreen"
    width: 640
    height: 480

    Button {
        text: "exit fullscreen"
        onClicked: window.visibility = "Windowed"
    }
}

mais il est important d'utiliser ApplicationWindow comme élément racine et non comme Rectangle. Pour ApplicationWindow vous devez importer QtQuick.Contrôle.

22
répondu JuSchu 2014-06-06 12:53:41

en utilisant QQmlApplicationEngine en c++ vous pouvez faire quelque chose comme ceci en QML:

main.rpc

#include <QApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

    return app.exec();
}

main.qml

import QtQuick 2.7
import QtQuick.Window 2.2

Window {
    id: mainWindow

    Component.onCompleted: {
        mainWindow.showFullScreen();
    }
}

Testé avec QT5.8

2
répondu Matthias Fritsch 2017-02-17 14:09:19

Qt a qmlviewer.

exécuter en plein écran:

$ qmlviewer -fullscreen -frameless file.qml

il y a Aussi un tutoriel de créer des applications fullscreen avec QML. Et composants pour les widgets de bureau.

2
répondu graphite 2017-11-29 07:54:32