嵌入式Linux使用Qt Quick实现触摸屏测试,亲测可用

前言:

        由于项目需要,需要在开发板研发前期工作做一个触摸屏测试的功能,适用于产线测试开发板触摸屏功能。

MultiPointTouchArea

        Qt提供了MultiPointTouchArea这样一个Item用来集合和跟踪接触点。

  • maximumTouchPoints : 最大跟踪触摸点数
  • minimumTouchPoints : 最小跟踪触摸点数
  • mouseEnabled : 鼠标使能
  • touchPoints : list<TouchPoint> 触摸点list

默认情况下,鼠标将以与单个触摸点相同的方式处理,触摸区域下的项目将不会接收鼠标事件。但是,如果mouseEnabled属性设置为false,它将对鼠标事件透明,这样就可以使用另一个对鼠标敏感的Item(例如MouseArea)来处理鼠标间的交互。

TouchPoint

Qt提供TouchPoint用来捕获触摸点的信息,比如当前的位置,压力和区域。

  • pressed: 是否按下
  • x:坐标
  • y:坐标
  • pressure:压力

470654cbd54a46e38109ac2bcb764ac1.png

      在这个项目我们只需要知道X和Y的变化,再加上是否按下即可。

实例

421f4c753b554fd5ae05224fa5809a2a.png

       设计方案

           我们需要一个可全屏触摸的区域,由于只需要单点触摸,所以只需要一个TouchPoint。


    MultiPointTouchArea {
        anchors.fill: parent
        touchPoints: [
            TouchPoint {
                id: point1
                onXChanged:{}
                onYChanged:{}
                onPressedChanged:{}
            }
        ]
    }

        然后我们需要一个画图的方式,使用Canvas实现。

 Canvas {
      id:mycanvas
      anchors.fill: parent
      onPaint: {
          var ctx = getContext("2d");
          ctx.fillStyle = "red"
          ctx.beginPath();
          ctx.arc(x,y, 30, 30, Math.PI * 2, true)
          ctx.fill();
          ctx.closePath();
      }
}

          但是Canvas只会画一次,我们需要当点击触摸屏的时候就画一个图形,这里我想了两种方式。

        第一种,把触摸屏的信号槽对应到Canvas中,不然一旦触发就重绘。

TouchPoint {
     onXChanged:
     {
        mycanvas.requestPaint();
     }
     onYChanged:
     {
        mycanvas.requestPaint();
     }
}

       第一种方式基本可以实现,但是需要手指滑动非常缓慢,不然会出现大量的断点,效果并不好。

        第二种,设计一个1ms触发定时器,不断的重绘,这样的方法流畅多了。

Canvas {
   id:mycanvas
   anchors.fill: parent
   onPaint: {
       var ctx = getContext("2d");
       ctx.fillStyle = "red"
       ctx.beginPath();
       ctx.arc(x,y, 30, 30, Math.PI * 2, true)
       ctx.fill();
       ctx.closePath();
   }
   Timer
   {
        id: timer
        interval: 1
        running: true
        repeat: true
        onTriggered:
        {
            mycanvas.requestPaint();
        }
    }
}

获取源码实例

到此触摸屏测试工具已经,感谢您的阅读,如果觉得作者写的还可以,对您有所帮助,希望得到您的支持。

6976372cb5ff401e9129c646a8e5c8a0.pngcc436a60ab66484d85a0f7ed0e450aee.png

猜你喜欢

转载自blog.csdn.net/u014491932/article/details/124969522
今日推荐