2012-01-26 14 views
8

フレックスとAS3を使用したリッチユーザーインターフェイスアプリケーションの開発経験があります。しかし、問題は、これらのフレックスアプリで既存のC++ビジネスロジックを使用することが非常に難しいことです。 QMLの登場により、豊富なUIアプリケーションのためにQ ++のビジネスロジックをQTで再利用できるかどうか不思議です。QMLを使用したフルスクリーンデスクトップアプリケーション

私はデスクトップ向けのフルスクリーンの豊富なユーザーインターフェイスアプリケーション(モバイルデバイスではますます一般的になってきている)を開発することが可能かどうかを知りたいと思っています。例えば(http://blog.flexexamples.com/2007/08/07/creating-full-screen-flex-applications/)Adobeにはフルスクリーンモードで使用できるFlash Playerがあり、AS3で書かれたコンテンツを実行します。 QT/QMLを使って同様のアプリケーションを書くことは可能ですか?

答えて

18

C++および一部のQMLユーザーインターフェイスで書かれたビジネスロジックを使用する場合は、アプリケーション内でQDeclarativeViewを使用できます。それはちょうど普通のQtウィジェットなので、メソッドshowFullScreen()を持っています。実際、このクラスは "アプリケーションの中のqmlviewer"に似ています。

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

あなたはより多くの情報hereを見つけることができます。

ですから、このような何かを得るでしょう。

+0

でテスト

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

を私はこれを+1するためにログインしました。私はこれを見つけ出すまでQtアプリケーションに約20分間QMLファイルを読み込む方法をインターネットで調べました。多分私はGoogleをより良く使う方法を学ぶ必要があります。 とにかく、ありがとうございました! – Carrotman42

2

Qtはqmlviewerである。フルスクリーンでそれを実行する

$ qmlviewer -fullscreen -frameless file.qml 

はまたQMLとフルスクリーンアプリケーションを作成するtutorialがあります。デスクトップウィジェット用 とcomponents

19

また、フルスクリーンに進むためのQML専用の方法もあります。 QDeclarativeViewではなくQQmlApplicationEngineを使用している場合は、QWidgetを継承せず、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" 
    } 
} 

ただし、ApplicationWindowは、Rectangleではなくルート要素として使用することが重要です。 ApplicationWindowでは、QtQuick.Controlsをインポートする必要があります。

+0

私にとってはうまくいっていますが、フルスクリーンのQtQuick 'MenuBar'が正しく動作しないバグがあります(少なくともWindowsでは)。 – Timmmm

+0

最大化されたウィンドウを使用するには、次のようにします: 'height:Screen.height; width:Screen.width' – nerdoc

1

あなたはQMLでこのような何かを行うことができ、C++でQQmlApplicationEngineを使用して:

main.cppにQT5.8

関連する問題