"True Transparency" explanation (image, 76kb).Как сделать «True Transparent» окно для курсора, желательно на чистом QML? (Qt 5.7)
На этом изображении ApplicationWindow имеют прозрачно прозрачный слой. Но на самом деле курсор не идет в окно позади ApplicationWindow (в данном случае - QT Creator).
«Истинная прозрачность» достигается, если добавить (раскомментировать) флаг «Qt.WindowTransparentForInput», но кнопки больше недоступны (это очевидно, я знаю).
Я пробовал различные флаги с похожими значениями (из документации), но не нашел рабочей комбинации - курсор остается в состоянии «по умолчанию», когда он находится в границах окна (должен находиться в «тексте») state, потому что это текст ниже).
Неужели кто-то столкнулся с подобной проблемой, и вы нашли решение? Благодаря!
код с картинки и другие файлы проекта остались нетронутыми (Qt Quick Controls 2 Применение):
import QtQuick 2.7
import QtQuick.Controls 1.5
ApplicationWindow {
visible: true
width: 320
height: 240
x: 400
y: 210
color: "transparent"
flags: Qt.Widget | Qt.FramelessWindowHint //| Qt.WindowTransparentForInput
//| Qt.WA_TranslucentBackground //| Qt.WA_NoSystemBackground
//| Qt.WA_NoBackground //| Qt.WA_MouseNoMask
Button {
x: ApplicationWindow.width - width
text: "Right Top Window Corner"
}
Button {
y: ApplicationWindow.height - height
text: "Left Bottom Window Corner"
}
}
Я думаю, вам нужно будет использовать API-интерфейсы операционной системы для достижения этого. – dtech
Может быть, это можно сделать по-другому. Какую реальную цель вы хотите архивировать? – folibis
Не уверен, что/как делать то, что вы хотите в 'qml', но в коде' C++ ', я думаю, [' QWidget :: setMask'] (http://doc.qt.io/qt-5/qwidget. html # setMask) может быть тем, что вы ищете. –