2012-01-26 14 views
8

Posiadam doświadczenie w tworzeniu bogatej aplikacji interfejsu użytkownika z flexem i AS3. Problemem jest jednak bardzo trudna do użycia logika biznesowa C++ z tymi elastycznymi aplikacjami. Wraz z pojawieniem się QML, jestem ciekawy, czy możliwe jest ponowne użycie logiki biznesowej C++ z QT dla bogatych aplikacji UI.Pełnoekranowa aplikacja komputerowa z QML

Chciałbym wiedzieć, czy możliwe jest stworzenie pełnoekranowych aplikacji interfejsu użytkownika (które stają się coraz powszechniejsze, zwłaszcza w urządzeniach mobilnych) na komputery stacjonarne. Na przykład (http://blog.flexexamples.com/2007/08/07/creating-full-screen-flex-applications/) Adobe ma Flash Player, który może być używany w trybie pełnoekranowym i uruchamia zawartość napisaną w AS3. Czy można pisać podobne aplikacje za pomocą QT/QML?

Odpowiedz

18

Jeśli chcesz używać logiki biznesowej napisanej w języku C++ i niektórych interfejsach użytkownika QML, możesz użyć aplikacji QDeclarativeView w swojej aplikacji. Jest to zwykły widget Qt, więc ma on metodę showFullScreen(). Właściwie ta klasa jest jak "qmlviewer wewnątrz twojej aplikacji".

Więc dostaniesz coś takiego:

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

można znaleźć więcej informacji here.

+0

Zalogowałem się, aby dać +1. Przeszukałem Internet na przykład, jak uzyskać plik QML załadowany do aplikacji Qt przez około 20 minut, aż znalazłem to. Może muszę nauczyć się lepiej korzystać z Google. W każdym razie, dziękuję bardzo! – Carrotman42

2

Qt ma qmlviewer.

Aby uruchomić go w trybie pełnoekranowym:

$ qmlviewer -fullscreen -frameless file.qml 

Ponadto istnieje tutorial tworzenia aplikacji z trybem pełnoekranowym QML. I components dla widżetów pulpitu.

19

Dostępna jest również funkcja pełnego ekranu w trybie QML. Możesz użyć tego, jeśli nie używasz QDeclarativeView, ale QQmlApplicationEngine, ponieważ ten drugi nie dziedziczy QWidget i nie ma metody 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" 
    } 
} 

Ale ważne jest, aby używać ApplicationWindow jako elementu głównego, a nie Rectangle. Dla ApplicationWindow musisz zaimportować QtQuick.Controls.

+0

Dobrze mi działało, ale zauważ, że jest błąd, który powoduje, że "MenuBar" nie działa poprawnie na pełnym ekranie QtQuick (przynajmniej w Windowsie). – Timmmm

+0

Aby użyć zmaksymalizowanego okna, możesz użyć: 'height: Screen.height; width: Screen.width' – nerdoc

1

Podczas korzystania QQmlApplicationEngine w C++ można zrobić coś takiego w 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(); 
    } 
} 

Testowane z QT5.8