Recently while working on my pet QML project I created reusable glossy QML button element. Hope it will help someone.
Well it quite simple to achieve this, I used Gradient element with right color combination and proper mouse event handling. Following is output.
Here is code for Button element from Button.qml
import Qt 4.7 Rectangle { id: button signal clicked property alias text: btnText.text height: 50 //radius: 10 border.color:"#6a6363" gradient: off Gradient { id:off GradientStop { position: 0.0; color: "lightsteelblue" } GradientStop { position: 0.5; color: "lightsteelblue" } GradientStop { position: 0.5; color: "black" } GradientStop { position: 1.0; color: "black" } } Gradient { id:onn GradientStop { position: 0.0; color: "steelblue" } GradientStop { position: 0.5; color: "steelblue" } GradientStop { position: 0.5; color: "black" } GradientStop { position: 1.0; color: "black" } } Text { id:btnText anchors.centerIn:parent color:"white" text: "text" } MouseArea { id: mouseArea anchors.fill: parent onClicked: { button.clicked(); } onEntered:{ button.gradient=onn border.color= "steelblue" } onCanceled:{ border.color= "#6a6363" button.gradient=off } onExited: { border.color= "#6a6363" button.gradient=off } } }
Following is how you can use above Button element.
Button { anchors.centerIn:parent text: "Test Button" width: parent.width/2 -10 onClicked: { console.log("Add folder clicked"); } }
Hi Kunal, for a Glossy Effect more realistic you need change some properties, look at this: http://quicking.wordpress.com/2011/07/15/glossy-effect-with-gradients/
ReplyDeleteI thanks for comment, I will try it.
ReplyDeleteNice button, thanks
ReplyDelete