#include "handle.h" Handle::Handle(QWidget *parent) : QWidget(parent) { setAutoFillBackground(true); setPalette(QPalette(Qt::transparent)); resize(200,200); setMinimumSize(100,100); mouseX=width()/2; mouseY=height()/2; tim=new QTimer(this); connect(tim,&QTimer::timeout,this,[=]{ emit keyNumchanged(getKeyNum()); }); connect(this,&Handle::keyNumchanged,this,[=](int num){ qDebug()<pos().x(); mouseY=event->pos().y(); if(r==true){ update(); r=false; } else{ r=true; } } void Handle::mouseReleaseEvent(QMouseEvent* event){ mouseX=width()/2; mouseY=height()/2; tim->stop(); mousePressed=false; emit keyNumchanged(Handle::stop); update(); } void Handle::mousePressEvent(QMouseEvent* event){ mouseX=event->pos().x(); mouseY=event->pos().y(); tim->start(100); mousePressed=true; update(); } double Handle::Pointdis(int a,int b,int x,int y){ return sqrt((double)((x-a)*(x-a)+(y-b)*(y-b))); } int Handle::getKeyNum(){ int x,y; int keynum; x=(int)(handleX*3.0/(padR*2)); y=(int)(handleY*3.0/(padR*2)); keynum=3*y+x; return keynum; }