我有使用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编写类似的应用程序?
答案 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
}