В настоящее время я изучаю QML и хочу создать круглое прозрачное окно сверху.
Я создал что-то похожее на это, но оно кажется неправильным по нескольким причинам.
Вот мой код:
Window {
id: app
visible: true
width: 70
height: 70
flags: Qt.Window | Qt.FramelessWindowHint | Qt.WA_TranslucentBackground
Rectangle {
anchors.fill: parent
radius: parent.width / 2.0
color: "black"
MouseArea {
property point clickPos: "1,1"
anchors.fill: parent
drag.target: parent
onPressed: {
clickPos = Qt.point(mouse.x,mouse.y)
}
onPositionChanged: {
var delta = Qt.point(mouse.x-clickPos.x, mouse.y-clickPos.y)
app.x += delta.x;
app.y += delta.y;
}
onDoubleClicked: app.close()
}
}
}
с использованием этих флагов в основном:
QQuickWindow::setDefaultAlphaBuffer(true);
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
Основная проблема в том, что фон не прозрачен.
Я думаю, это потому, что «круглый» прямоугольник полностью закрашен!?
У меня естьпробовал несколько флагов (Qt.Tool, Qt.Transparent, ...), но ни один из них не работает.
Мне было интересно, начал ли я хорошо делать то, что я хочу (я думаю, что нет), и каково это?лучший способ сделать это.
Я видел свойство отсечения для элемента qml, но также вижу проблемы с производительностью.Я не знаю, стоит ли использовать это свойство.
Я работаю на Qt 5.10 и Win7, используя MSVC в качестве компилятора.
Спасибо
РЕДАКТИРОВАТЬ: Добавление прозрачного фона в окно