ice*_*man 13 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编写类似的应用程序?
JuS*_*chu 27
还有一种仅限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"
}
}
Run Code Online (Sandbox Code Playgroud)
但是使用ApplicationWindow作为根元素而不是Rectangle很重要.对于ApplicationWindow,您必须导入QtQuick.Controls.
小智 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();
}
Run Code Online (Sandbox Code Playgroud)
您可以在此处找到更多信息.
小智 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();
}
Run Code Online (Sandbox Code Playgroud)
main.qml
import QtQuick 2.7
import QtQuick.Window 2.2
Window {
id: mainWindow
Component.onCompleted: {
mainWindow.showFullScreen();
}
}
Run Code Online (Sandbox Code Playgroud)
用QT5.8测试
这是先前答案的另一个变体,但它使用(默认 Qt Quick Application - Empty)Window 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
}
Run Code Online (Sandbox Code Playgroud)