使用QML的全屏桌面应用程序

时间:2012-01-26 05:32:08

标签: qt4 fullscreen qml

我有使用flex和AS3开发丰富的用户界面应用程序的经验。然而,问题是它很难在这些flex应用程序中使用现有的c ++业务逻辑。随着QML的出现,我很好奇是否可以将Q ++业务逻辑与QT一起用于丰富的UI应用程序。

我想知道是否有可能为桌面开发全屏丰富的用户界面应用程序(在移动设备中变得越来越常见)。例如(http://blog.flexexamples.com/2007/08/07/creating-full-screen-flex-applications/)Adobe有Flash Player,可以在全屏模式下使用,并运行用AS3编写的内容。是否可以使用QT / QML编写类似的应用程序?

5 个答案:

答案 0 :(得分:26)

还有一种仅限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。

答案 1 :(得分:20)

如果您想使用在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

答案 2 :(得分:5)

在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进行测试

答案 3 :(得分:2)

Qt有qmlviewer

全屏运行:

$ qmlviewer -fullscreen -frameless file.qml

还有tutorial使用QML创建全屏应用程序。 桌面小部件的components

答案 4 :(得分:1)

这里是先前答案的又一个变体,但这使用了(默认的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
}