2012-01-26 24 views
8

Tengo experiencia en el desarrollo de aplicaciones de interfaz de usuario con flex y AS3. Sin embargo, el problema es que es muy difícil utilizar la lógica comercial C++ existente con estas aplicaciones flexibles. Con el advenimiento de QML, tengo curiosidad de si es posible reutilizar la lógica empresarial C++ con QT para aplicaciones de interfaz de usuario ricas.Aplicación de escritorio de pantalla completa con QML

Quiero saber si es posible desarrollar aplicaciones de interfaz de usuario completas de pantalla completa (que cada vez son más comunes, especialmente en dispositivos móviles) para el escritorio. Por ejemplo (http://blog.flexexamples.com/2007/08/07/creating-full-screen-flex-applications/) Adobe tiene Flash Player que se puede usar en modo de pantalla completa y ejecuta contenido escrito en AS3. ¿Es posible escribir aplicaciones similares usando QT/QML?

Respuesta

18

Si desea utilizar la lógica empresarial escrita en C++ y alguna interfaz de usuario QML puede usar QDeclarativeView dentro de su aplicación. Es solo un widget regular de Qt, así que tiene el método showFullScreen(). En realidad, esta clase es como "qmlviewer dentro de tu aplicación".

Así se logra algo como esto:

#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(); 
} 

Puede encontrar más información here.

+0

Me conecté a +1 esto. Busqué en Internet un ejemplo de cómo cargar un archivo QML en una aplicación Qt durante unos 20 minutos hasta que encontré esto. Tal vez deba aprender a usar Google mejor. De todos modos, ¡muchas gracias! – Carrotman42

2

Qt tiene qmlviewer.

ejecutarlo en pantalla completa:

$ qmlviewer -fullscreen -frameless file.qml 

También hay un tutorial de crear aplicaciones de pantalla completa con QML. y components para widgets de escritorio.

19

También hay una forma QML para ir a pantalla completa. Puede usar esto si no está utilizando QDeclarativeView sino QQmlApplicationEngine, ya que este último no hereda QWidget y no tiene el método 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" 
    } 
} 

Pero es importante utilizar ApplicationWindow como el elemento raíz y no rectangular. Para ApplicationWindow debe importar QtQuick.Controls.

+0

Funcionó bien para mí, pero tenga en cuenta que hay un error que hace que la pantalla completa QtQuick 'MenuBar's no funcione correctamente (al menos en Windows). – Timmmm

+0

Para usar la ventana maximizada, puede usar: 'height: Screen.height; ancho: Screen.width' – nerdoc

1

Al utilizar QQmlApplicationEngine en C++ se puede hacer algo como esto en QML:

main.cpp

#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(); 
    } 
} 

probado con QT5.8

Cuestiones relacionadas