[英]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
}
你好朋友,我知道它遲到了 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.