❝介绍Qml的两种透明窗口的实现。❞
通过QQmlApplicationEngine加载Qml界面文件。需要添加下列代码即可:
int main(int argc, char *argv[])
{
...
QQuickWindow::setSceneGraphBackend(QSGRendererInterface::Software);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
...
}
Window
需要添加设置color为透明色("#00000000"),flags设置为Qt.FramelessWindowHint
。import QtQuick 2.0
import QtQuick.Window 2.2
Window {
id: root
visible: true
width: 640
height: 480
title: qsTr("Qml透明窗口1")
color: "#00000000"
flags: Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint
...
}
通过QQuickView加载Qml界面文件。需要添加下列代码即可:
int main(int argc, char *argv[])
{
...
QQuickWindow::setSceneGraphBackend(QSGRendererInterface::Software);
QQuickView view(QUrl("qrc:/main.qml"));
view.setTitle(QString::fromLocal8Bit("Qml透明窗口2"));
view.setFlag(Qt::FramelessWindowHint);
view.setFlag(Qt::WindowStaysOnTopHint);
view.setColor(QColor(Qt::transparent));
view.show();
...
}
Qml中只需要将Item使用为根项目即可。
import QtQuick 2.0
Item {
id: root
width: 640
height: 480
}
WindowStaysOnTopHint
为窗口置顶标记。