|
5Qter豆
贴出两段代码,第一段代码保存在MyCanvas.qml文件中。- import QtQuick 2.6
-
- Rectangle{
- id:rect
- readonly property color color_normal: "white"//Qt.rgba(0.8824,0.8824,0.8824,1.0)//Qt.rgba(0.9412,0.9412,0.9412,1.0)
- readonly property color color_hover: Qt.rgba(0.898,0.9451,0.9843,1.0)
- readonly property color color_click: Qt.rgba(0.8039,0.8941,0.9686,1.0)
- readonly property color color_border: Qt.rgba(0,0.4706,0.8431,1.0)
- property var dat: [151,0.0489,0.1]
- property int acous: 0
- property int datastream: 0
- property real percent: 1.0
- property point nextUp
- property point nextDown
- property bool paintFlag: false
- signal clicked
- signal deletemyself
-
- function painting(){
- rect.width=400*percent*dat[2]+6
- rect.height=400*percent*dat[1]+6
- plate.width=width-4
- plate.height=height-4
- plate.x=2
- plate.y=2
- plate.canvasSize.width=plate.width
- plate.canvasSize.height=plate.height
- paintFlag=true
- plate.requestPaint()
- console.log("3"+rect.paintFlag)
- }
-
- onPercentChanged: {
- console.log("1"+rect.paintFlag)
- painting()
- }
-
-
- width: 10
- height: 10
- border.color: color_border
- border.width: focus?1:0
- color: color_normal
-
- MouseArea{
- anchors.fill: parent
- hoverEnabled: true
- acceptedButtons: Qt.LeftButton|Qt.RightButton
-
- onClicked: parent.clicked()
-
- onPressed: {
- parent.color=parent.color_click
- parent.focus=true
- }
- onReleased: parent.color=parent.color_hover
- onEntered: {
- parent.color=parent.color_hover;
- parent.border.width=1
- }
- onExited: {
- parent.color=parent.color_normal;
- parent.border.width=Qt.binding(function(){return parent.focus?1:0})
- }
- }
-
- Canvas{
- id:plate
- contextType: "2d"
- onPaint: {
- console.log("2"+rect.paintFlag)
- context.clearRect(0,0,plate.width,plate.height)
- if(rect.paintFlag){
- context.lineWidth=2
- context.strokeStyle="red"
- var d=rect.dat[1]
- var L=rect.dat[2]
- var pe=400*rect.percent
- context.moveTo(1,1)
- context.lineTo(L*pe+1,1)
- context.moveTo(1,d*pe+1)
- context.lineTo(L*pe+1,d*pe+1)
- context.stroke()
- rect.paintFlag=false
- }
- }
- }
- }
复制代码 第二段代码,保存在Canva.qml文件中。- import QtQuick 2.6
- import QtQuick.Window 2.2
-
- Window {
- visible: true
- width: 640
- height: 480
- MyCanvas{
- id:mycan
- x:100
- y:50
- }
-
- MouseArea{
- anchors.fill: parent
- z:-1
- onClicked: mycan.percent+=1
- }
- }
复制代码 第二段代码对第一段代码进行了简单的调用。但是对于输出结果我有些不明白!
问题一:注意输出窗口的输出顺序:
为什么先输出3,在输出2??
问题二:多次点击界面空白部分,界面显示如下:
为什么两根长的红线之间的短的红线没有被清除??如果想要清除,应该如何处理?
求大神解答。。。。万分感谢
|
|