web-dev-qa-db-ja.com

QMLを備えたフルスクリーンデスクトップアプリケーション

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

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

13
iceman

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

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

20
GooRoo

全画面表示にする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"
    }
}

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

27
JuSchu

C++でQQmlApplicationEngineを使用する場合、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();
    }
}

QT5.8でテスト済み

5

これは以前の回答からのさらに別のバリエーションですが、これは(デフォルトのQtクイックアプリケーション-空)ウィンドウQMLタイプとQt列挙型を使用します:

import QtQuick 2.6
import QtQuick.Window 2.2

Window {
    id: mainWindow
    objectName: "mainWindow"
    visible: true
    flags: Qt.FramelessWindowHint | Qt.Window
    color: "black"
    visibility: Qt.WindowFullScreen // << the solution
}
3
Richard Jessop

Qtには qmlviewer があります。

フルスクリーンで実行するには:

$ qmlviewer -fullscreen -frameless file.qml

また、QMLを使用してフルスクリーンアプリケーションを作成する チュートリアル もあります。そして components デスクトップウィジェットの場合。

2
graphite