我将 QQmlApplicationEngine 与 QQuickWindow 一起用于应用程序,但我不能
透明的主窗口。我想在应用程序弹出之前设置启动画面,并且我使用 Window 组件,它应该是透明的,但事实并非如此,我的 main.cpp 是
int main(int argc, char *argv[])
{
Application app(argc, argv);
QShookaClient shooka_client;
QQmlApplicationEngine engine;
engine.rootContext()->setContextProperty("shooka", &shooka_client);
engine.load(QUrl("qrc:///shooka/shooka.qml"));
QObject *topLevel = engine.rootObjects().value(0);
QQuickWindow *window = qobject_cast<QQuickWindow *>(topLevel);
window->show();
window->setFlags(Qt::FramelessWindowHint);
window->setColor(Qt::transparent);
return app.exec();
}
但是setColor在win7下不起作用。我知道有 QDeclarativeView 的方法,甚至我找到了 QQuickview 的解决方案,它应该适用于 QQuickWindow 但不,任何人都可以帮助我..
人们必须认识到,一Window
QtQuick 类型映射到QQuickWindow
C++ 类,派生自QWindow
。根据卡梅伦的回答,可以设置窗口标志。但你还需要设置opacity
比如说,0.75 使其半透明。所有这些都可以在 QML 中完成,无需从 C++ 设置标志。
import QtQuick 2.1
import QtQuick.Controls 1.0
import QtQuick.Window 2.0
ApplicationWindow {
title: qsTr("Hello World")
width: 640
height: 480
flags: Qt.SubWindow | Qt.Tool | Qt.FramelessWindowHint | Qt.WindowSystemMenuHint | Qt.WindowStaysOnTopHint
opacity: 0.75
visible: true
menuBar: MenuBar {
Menu {
title: qsTr("File")
MenuItem {
text: qsTr("Exit")
onTriggered: Qt.quit();
}
}
}
Button {
text: "Hello World"
anchors.centerIn: parent
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)