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?
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.
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.
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
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.