I want a semi-transparent rectangular shape using Qt Quick QML, but with rounded corners on 1 side only.
This is sort of the shape of the rectangle I want. If it were not see through, I would probably just overlap 2 rectangles, one with rounded corners and one without. However, this doesn't work with transparency, as the overlap becomes darker.
----------|
/ |
/ |
| |
| |
| |
\ |
\ |
----------|
Anybody have any ideas?
You could use clipping (see performance docs) to cut off the corners of a single rounded rectangle:
import QtQuick 2.5
import QtQuick.Window 2.2
Window {
width: 300
height: 300
visible: true
Item {
width: 100
height: 100
anchors.centerIn: parent
clip: true
Rectangle {
anchors.fill: parent
anchors.rightMargin: -radius
radius: 10
color: "navajowhite"
opacity: 0.5
}
}
}
You could also use layers to avoid the overlapping transparency issue:
import QtQuick 2.5
import QtQuick.Window 2.2
Window {
width: 300
height: 300
visible: true
Item {
width: 100
height: 100
opacity: 0.5
layer.enabled: true
anchors.centerIn: parent
Rectangle {
color: "navajowhite"
radius: 10
anchors.fill: parent
}
Rectangle {
color: "navajowhite"
anchors.fill: parent
anchors.leftMargin: 10
}
}
}
As mentioned by @folibis, you can also use Canvas, for which there is already a similar answer.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With