簡體   English   中英

全屏桌面應用程序 QML

[英]Full-screen desktop application with QML

我有使用 flex 和 AS3 開發豐富的用戶界面應用程序的經驗。 然而,問題是很難將現有的 c++ 業務邏輯與這些 flex 應用程序一起使用。 隨着 QML 的出現,我很好奇是否有可能將 c++ 業務邏輯與 QT 一起用於富 UI 應用程序。

我想知道是否有可能為桌面開發全屏豐富的用戶界面應用程序(這在移動設備中變得越來越普遍)。 例如 ( http://blog.flexexamples.com/2007/08/07/creating-full-screen-flex-applications/ ) Adobe 有 Flash 播放器,可以在全屏模式下使用並運行用 AS3 編寫的內容。 是否可以使用 QT/QML 編寫類似的應用程序?

還有一種僅限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。

如果您想使用在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();
}

您可以在此處找到更多信息。

在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測試

這是前一個答案的另一個變體,但它使用(默認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
}

Qt有qmlviewer

要全屏運行:

$ qmlviewer -fullscreen -frameless file.qml

還有一個使用QML創建全屏應用程序的教程 組件的桌面小工具。

你好朋友,我知道它遲到了 10 年,但我希望能幫助一些人。 要將 windows 設置為全屏 android 和 QML/quick 中的其他設置,您可以使用此代碼:

import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Controls 2.12

ApplicationWindow {
id: root
width: Screen.width
height: Screen.height
visibility:Window.FullScreen
Component.onCompleted: {
    console.log(width+":"+height)
}
visible: true
title: qsTr("Hello World")
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM