Ich versuche, ein "Loch" in meinem Widgets Hintergrund, so dass es an einem bestimmten Ort völlig transparent ist und dass Sie können sehen, was dahinter ist. Das Problem ist, dass weder die Größe noch der Ort dieses "Lochs" fest sind, also kann es grundsätzlich irgendwo auf dem Widget sein, deshalb kann ich keine Maskenbilder verwenden.Gibt es eine Möglichkeit, die QWidget :: setMask() - Funktion zu invertieren oder einen ähnlichen Effekt zu erzielen?
Es gibt die Funktion setMask (QRegion), aber der Effekt, den ich benötige, müsste invertiert werden, also sollte man grundsätzlich nicht nur die maskierte Region zeichnen, sondern auch alles, was nicht von der Maske abgedeckt wird.
Gibt es eine Möglichkeit, einen solchen Effekt zu erzielen?
Ehrfürchtig, das funktioniert. Obwohl es langsam ist, ist es ein wenig nachlassend. Irgendwelche Gründe, um die Geschwindigkeit zu verbessern oder etwas zu cachen? –
Ich weiß es nicht. Wann verzögert es? Wann, wann wenden Sie es an? – ilotXXI
Die leere Region wird mit der Maus gezeichnet, so dass sie beim Zeichnen dieser Region zurückbleibt. Ich nehme die mouseDown Position und auf mouseMove aktualisiere die aktuelle Mausposition und basiere darauf, dass ich die emptyRegion bekomme. In der mouseMove-Funktion rufe ich auch Update() auf, um das Widget erneut zu zeichnen und im überschriebenen paintEvent übernehme ich die Maske. –