星小夜的登录器  v1.0
nono.cpp
浏览该文件的文档.
1 
10 #include "nono.h"
11 #include "ui_nono.h"
17 Nono::Nono(QWidget *parent) :
18  QWidget(parent),
19  ui(new Ui::Nono)
20 {
21  ui->setupUi(this);
22  setAttribute(Qt::WA_QuitOnClose,false);
23 
24  this->setWindowOpacity(1);//设置窗体不透明
25  this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint);//设置窗体无边框,允许任务栏按钮右键菜单
26  this->setAttribute(Qt::WA_TranslucentBackground);//设置背景透明
27  //vipfire
28  QPixmap pixmap(allpath+"/gif/buff_VIP_5.png");
29  ui->label_2->setPixmap(pixmap);
30  ui->label_2->show();
31  qDebug()<<"绿火初始化无问题";
32  QFont font ( "Microsoft YaHei", 10, 75); //第一个属性是字体(微软雅黑),第二个是大小,第三个是加粗(权重是75)
33  //QFont font1("Microsoft YaHei", 15,75);
34  ui->label_3->setFont(font);
35  //ui->label_6->setFont(font1);
36 
37  int fontId = QFontDatabase::addApplicationFont(allpath + "/font/RuiZiZhenYanTiMianFeiShangYong-2.ttf");
38  qDebug()<<allpath + "/font/RuiZiZhenYanTiMianFeiShangYong-2.ttf";
39  qDebug() << "fontId = "<< fontId;
40  QString nonot = QFontDatabase::applicationFontFamilies(fontId).at(0);
41  qDebug() <<"fontname = " <<nonot;
42  QFont font1(nonot,12);
43  ui->label_6->setFont(font1);//设置控件自定义字体
44  qDebug()<<"nono字体无问题";
45 
46 
47  ui->label_2->setVisible(false);
48  ui->label_3->setVisible(false);
49  ui->label_4->setVisible(false);
50  ui->label_5->setVisible(false);
51  ui->label_6->setVisible(false);
52  ui->label_7->setVisible(false);
53  ui->label_8->setVisible(false);
54  ui->label_9->setVisible(false);
55  ui->label_10->setVisible(false);
56  ui->label_11->setVisible(false);
57  ui->label_12->setVisible(false);
58  hidecap=true;
59 
60  /*初始化时间*/
61  time = new QTime();
62  timer = new QTimer();
63 
64  time1 = new QTime();
65  timer1 = new QTimer();
66  connect(timer,SIGNAL(timeout()),this,SLOT(slot_timer_timeout()));
67  connect(timer1,SIGNAL(timeout()),this,SLOT(slot_nono_change()));
68  freshlabel=new ClickedLabel(this);
69  freshlabel->setGeometry(120,420,50,50);
70  connect(freshlabel,SIGNAL(Clicked(ClickedLabel*)),this,SLOT(slot_Fresh()));
71  shibielabel=new ClickedLabel(this);
72  shibielabel->setGeometry(120,530,50,50);
73  connect(shibielabel,SIGNAL(Clicked(ClickedLabel*)),this,SLOT(slot_shibie()));
74  //connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(slot_startedTimer_clicked(bool)));
75  qDebug()<<"nono时间无问题";
76  //nonogif
77  mouseMovePos = QPoint(0, 0);
78  movie = new QMovie(allpath+"/gif/nono3.gif");
79  movie1 = new QMovie(allpath+"/gif/nono_1_1.gif");
80  movie2 = new QMovie(allpath+"/gif/nono_2_1.gif");
81  movie3 = new QMovie(allpath+"/gif/nono_3_1.gif");
82  movie4 = new QMovie(allpath+"/gif/nono_4_1.gif");
83  ui->label->setMovie(movie); // 1. 设置要显示的 GIF 动画图片
84  movie->start(); // 2. 启动动画
85  ui->label->show();
86  qDebug()<<"nonogif无问题";
87  //cap
88  clabel =new ClickedLabel(this);
89  clabel->setGeometry(50,0,396,345);
90  connect(clabel,SIGNAL(Clicked(ClickedLabel*)),this,SLOT(slot_hidecap()));
91 
92  //定时更换nono
93  time1->restart();
94  timer1->start(1000);
95  qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
96  tmp1=GetCurrentProcessId();
97  //识别
98  pt=new Pettip();
99  connect(pt,SIGNAL(sendmes(QString)),this,SLOT(slot_tip(QString)));
100  connect(this,SIGNAL(signal_pet(QString)),pt,SLOT(slot_getname(QString)));
101 }
102 
109 {
110  qDebug()<<tr("开启计时器");
111  time->restart();
112  timer->start(1000);
113  ui->label_2->setVisible(true);
114  ui->label_3->setVisible(true);
115 }
122 {
123  qDebug()<<tr("停止计时器");
124  timer->stop();
125 }
132 
133 
134  int t=time1->elapsed()/1000;
135  int k=qrand()%4;
136  if(t%15==0){
137  double t2=xy_memory(tmp1);
138  if(t2>600)
139  slot_tip("当前内存使用:"+QString::number(t2)+"MB(内存占用较大及时刷新避免卡顿)");
140  else
141  slot_tip("当前内存使用:"+QString::number(t2)+"MB");
142  }
143 
144  if(t%30==0){
145  if(k==0){
146  ui->label->setMovie(movie1); // 1. 设置要显示的 GIF 动画图片
147  movie1->start(); // 2. 启动动画
148  Delay(4000);
149  ui->label->setMovie(movie); // 1. 设置要显示的 GIF 动画图片
150  movie->start(); // 2. 启动动画
151  }else if(k==2){
152  ui->label->setMovie(movie3); // 1. 设置要显示的 GIF 动画图片
153  movie3->start(); // 2. 启动动画
154  Delay(3000);
155  ui->label->setMovie(movie); // 1. 设置要显示的 GIF 动画图片
156  movie->start(); // 2. 启动动画
157  }else if(k==1){
158  ui->label->setMovie(movie2); // 1. 设置要显示的 GIF 动画图片
159  movie2->start(); // 2. 启动动画
160  Delay(3500);
161  ui->label->setMovie(movie); // 1. 设置要显示的 GIF 动画图片
162  movie->start(); // 2. 启动动画
163  }else if(k==3){
164  ui->label->setMovie(movie4); // 1. 设置要显示的 GIF 动画图片
165  movie4->start(); // 2. 启动动画
166  Delay(3000);
167  ui->label->setMovie(movie); // 1. 设置要显示的 GIF 动画图片
168  movie->start(); // 2. 启动动画
169  }
170 
171  }
172  if(this->underMouse()){
173  ui->label_7->setVisible(true);
174  ui->label_8->setVisible(true);
175  ui->label_9->setVisible(true);
176  ui->label_10->setVisible(true);
177  ui->label_11->setVisible(true);
178  ui->label_12->setVisible(true);
179  }else{
180  ui->label_7->setVisible(false);
181  ui->label_8->setVisible(false);
182  ui->label_9->setVisible(false);
183  ui->label_10->setVisible(false);
184  ui->label_11->setVisible(false);
185  ui->label_12->setVisible(false);
186  }
187 
188 }
194  firetime=1800-(time->elapsed()/1000);
195  //qDebug()<<firetime;
197  //qDebug()<<firetime_min;
199  //qDebug()<<firetime_sec;
200  QString tmp=QString::number(firetime_min,10)+":"+QString::number(firetime_sec,10);
201  //qDebug()<<tmp;
202  if(firetime<10){
203  timer->stop();
204  }
205  ui->label_3->setText(tmp);
206 }
207 
213 {
214  delete ui;
215  delete movie;
216  delete movie1;
217  delete movie2;
218  delete movie3;
219  delete movie4;
220 
221  delete time;
222  delete timer;
223 
224  delete time1;
225  delete timer1;
226  delete clabel;
227  delete freshlabel;
228  delete shibielabel;
229 
230  delete nam;
231  delete pt;
232 }
238 void Nono::slot_capture(bool tmp){
239  dm.Capture( 564, 223, 960, 568,QDir::currentPath()+"/screen.bmp");
240  QPixmap pixmap(QDir::currentPath()+"/screen.bmp");
241  ui->label_4->setPixmap(pixmap);
242  ui->label_4->show();
243  ui->label_4->setVisible(true);
244  hidecap=false;
245 
246 }
247 
253 void Nono::mouseMoveEvent(QMouseEvent *event)
254 {
255 
256  if(mouseMovePos != QPoint(0, 0))
257  {
258 
259  move(geometry().x() + event->globalPos().x() - mouseMovePos.x(),
260  geometry().y() + event->globalPos().y() - mouseMovePos.y());
261  mouseMovePos = event->globalPos();
262 
263 
264 
265  }
266 }
267 
268 
274 void Nono::mousePressEvent(QMouseEvent *event)
275 {
276  mouseMovePos = event->globalPos();
277 }
283 void Nono::mouseReleaseEvent(QMouseEvent *event)
284 {
285  mouseMovePos = QPoint(0, 0);
286 }
292 void Nono::slot_tip(QString content){
293  ui->label_5->setVisible(true);
294  ui->label_6->setVisible(true);
295  ui->label_6->setText(content);
296  Delay(4000);
297  ui->label_5->setVisible(false);
298  ui->label_6->setVisible(false);
299 
300 }
306  if(hidecap==true){
307  hidecap=false;
308  ui->label_4->setVisible(true);
309  }else{
310  hidecap=true;
311  ui->label_4->setVisible(false);
312  }
313 }
319 void ClickedLabel::mouseReleaseEvent(QMouseEvent *evt)
320 {
321  emit Clicked(this);
322 }
329  emit signal_fresh();
330 }
337  emit signal_sb();
338  Delay(100);
339  getAccessToken("RwoxBEWTWXq1rKhiWGQT3UD3","X1TGKuGKClEmP6MAMg5Nw61G2yTBHtMt");
340  recognition();
341 }
349 void Nono::getAccessToken(QString key, QString secret)
350 {
351 
352  QSettings *configIniWrite = new QSettings("set.ini", QSettings::IniFormat);
353  QDateTime time = QDateTime::currentDateTime(); //获取当前时间
354  int timeT = time.toTime_t();
355 
356  if((configIniWrite->value("tokenTime").toInt() + 30*24*3600) < timeT){
357  nam = new QNetworkAccessManager(this);
358  QString parm = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id="+key+"&client_secret="+secret+"&";
359  QUrl url(parm);
360  connect(nam, &QNetworkAccessManager::finished,this, &Nono::getAccessTokenRequestFinished);
361  QNetworkReply* reply = nam->get(QNetworkRequest(url));
362  }else{
363  accessToken = configIniWrite->value("accessToken").toString();
364  }
365  qDebug()<<"access"<<accessToken;
366 }
373  dm.Capture(893,90,965,108,QDir::currentPath()+"/shi.bmp");
374  QImage image(QDir::currentPath()+"/shi.bmp");
375  QByteArray ba;
376  QBuffer buf(&ba);
377  image.save(&buf, "bmp");
378  QByteArray hexed = ba.toBase64();
379  buf.close();
380  //qDebug()<<"hexed"<<hexed;
381  QString parm = QString(hexed);
382  if(parm.isEmpty()){
383  QMessageBox::information(NULL, "错误", "图像数据不能为空");
384  return;
385  }
386  nam = new QNetworkAccessManager(this);
387  QUrl url;
388  url.setUrl("https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token="+accessToken);
389 
390  QNetworkRequest request;
391  request.setUrl(url);
392  request.setHeader(QNetworkRequest::ContentTypeHeader,QVariant("application/x-www-form-urlencoded"));
393  QByteArray byteArr;
394 
395  byteArr.append("image=");
396  byteArr.append(QUrl::toPercentEncoding(parm));
397  connect(nam, &QNetworkAccessManager::finished,this, &Nono::recognitionRequestFinished);
398  QNetworkReply* reply = nam->post(request,byteArr);
399 }
405 void Nono::getAccessTokenRequestFinished(QNetworkReply* reply) {
406  QNetworkReply::NetworkError err = reply->error();
407  if(err != QNetworkReply::NoError) {
408  qDebug() << "accFailed: " << reply->errorString();
409  }else {
410  // 获取返回内容
411  QJsonParseError json_error;
412  QJsonDocument parse_doucment = QJsonDocument::fromJson(reply->readAll(), &json_error);
413  if(parse_doucment.isObject()){
414  QJsonObject obj = parse_doucment.object();
415  accessToken = obj.take("access_token").toString();
416  QSettings *configIniWrite = new QSettings("set.ini", QSettings::IniFormat);
417  //向ini文件中写入内容,setValue函数的两个参数是键值对
418  configIniWrite->setValue("accessToken", accessToken);
419  QDateTime time = QDateTime::currentDateTime(); //获取当前时间
420  int timeT = time.toTime_t(); //将当前时间转为时间戳
421  configIniWrite->setValue("tokenTime", timeT);
422  //写入完成后删除指针
423  delete configIniWrite;
424  }
425  }
426  nam->deleteLater();
427 }
428 
434 void Nono::recognitionRequestFinished(QNetworkReply* reply){
435  QNetworkReply::NetworkError err = reply->error();
436  //qDebug()<<reply->readAll();
437  if(err != QNetworkReply::NoError) {
438  qDebug() << "ocrFailed: " << reply->errorString();
439  }else {
440  // 获取返回内容
441  QJsonParseError json_error;
442  QJsonDocument parse_doucment = QJsonDocument::fromJson(reply->readAll(), &json_error);
443  if(parse_doucment.isObject()){
444  QJsonObject obj = parse_doucment.object();
445  int wordsNum = obj.take("words_result_num").toInt();
446  if(wordsNum > 0){
447  QString res;
448  QJsonArray jsonArr = obj.take("words_result").toArray();
449  for(int i=0;i<wordsNum;i++){
450  res.append(jsonArr[i].toObject().take("words").toString());
451 
452  }
453  pt->show();
454  qDebug()<<res;
455  emit signal_pet(res);
456  slot_tip(res);
457 
458  }else{
459  slot_tip("未检测到精灵");
460  }
461  }
462  }
463  nam->deleteLater();
464 }
470  pt->show();
471 
472 }
Nono::nam
QNetworkAccessManager * nam
Definition: nono.h:110
Nono::shibielabel
ClickedLabel * shibielabel
Definition: nono.h:107
Nono::movie1
QMovie * movie1
Definition: nono.h:82
Nono::firetime_min
int firetime_min
Definition: nono.h:102
Nono::tmp1
DWORD tmp1
Definition: nono.h:93
Delay
void Delay(int time)
延迟线程(非阻塞)
Definition: xy.cpp:217
Nono::Nono
Nono(QWidget *parent=0)
nono窗口构造函数
Definition: nono.cpp:17
Nono::getAccessTokenRequestFinished
void getAccessTokenRequestFinished(QNetworkReply *reply)
获取accesstoken网页返回内容处理
Definition: nono.cpp:405
ClickedLabel
重载标签(可点击) 重载了标签,造了一个带有点击信号的标签类
Definition: nono.h:49
Nono::slot_startedTimer_clicked
void slot_startedTimer_clicked(bool)
绿火计时器开启函数
Definition: nono.cpp:108
Nono::~Nono
~Nono()
nono窗口析构函数
Definition: nono.cpp:212
ClickedLabel::Clicked
void Clicked(ClickedLabel *clicked)
Nono::recognitionRequestFinished
void recognitionRequestFinished(QNetworkReply *reply)
Nono::recognitionRequestFinished
Definition: nono.cpp:434
Nono::mousePressEvent
void mousePressEvent(QMouseEvent *event)
鼠标按下nono窗口重载
Definition: nono.cpp:274
Nono::mouseReleaseEvent
void mouseReleaseEvent(QMouseEvent *event)
鼠标离开nono窗口重载
Definition: nono.cpp:283
Nono::ui
Ui::Nono * ui
Definition: nono.h:92
Nono::clabel
ClickedLabel * clabel
Definition: nono.h:105
Nono::slot_hidecap
void slot_hidecap()
巅峰阵容截图隐藏
Definition: nono.cpp:305
Nono
nono窗口类 这个类跟nono相关
Definition: nono.h:69
Nono::signal_fresh
void signal_fresh()
Nono::signal_pet
void signal_pet(QString name)
Nono::movie4
QMovie * movie4
Definition: nono.h:85
Nono::slot_nono_change
void slot_nono_change()
nono状态改变
Definition: nono.cpp:131
Nono::timer1
QTimer * timer1
Definition: nono.h:99
nono.h
nono主窗口头文件
Nono::slot_Fresh
void slot_Fresh()
刷新按钮按下
Definition: nono.cpp:328
Nono::mouseMoveEvent
void mouseMoveEvent(QMouseEvent *event)
鼠标按下nono窗口并移动重载
Definition: nono.cpp:253
allpath
QString allpath
登录器运行目录
Definition: ext.cpp:45
Nono::getAccessToken
void getAccessToken(QString key, QString secret)
获取百度ocr的accesstoken
Definition: nono.cpp:349
Nono::recognition
void recognition()
识别对面精灵的名字
Definition: nono.cpp:372
Nono::freshlabel
ClickedLabel * freshlabel
Definition: nono.h:106
Nono::hidecap
bool hidecap
Definition: nono.h:104
Nono::firetime
int firetime
Definition: nono.h:101
Nono::pt
Pettip * pt
Definition: nono.h:111
Ui
Definition: atoken.h:17
Nono::slot_stopedTimer_clicked
void slot_stopedTimer_clicked(bool)
绿火计时器停止函数
Definition: nono.cpp:121
Nono::signal_sb
void signal_sb()
Nono::accessToken
QString accessToken
Definition: nono.h:109
Nono::slot_timer_timeout
void slot_timer_timeout()
绿火计时器每秒处理动作
Definition: nono.cpp:193
Pettip
精灵技能快查窗口类 这个类写了整整一天,格式化精灵技能真难
Definition: pettip.h:37
Nono::movie3
QMovie * movie3
Definition: nono.h:84
Nono::firetime_sec
int firetime_sec
Definition: nono.h:103
Nono::time
QTime * time
Definition: nono.h:95
Nono::movie
QMovie * movie
Definition: nono.h:81
dm
Dm::Idmsoft dm
大漠插件相关的对象(唯一)
Definition: ext.cpp:15
ClickedLabel::mouseReleaseEvent
void mouseReleaseEvent(QMouseEvent *)
鼠标释放重载-带点击事件label类
Definition: nono.cpp:319
Nono::movie2
QMovie * movie2
Definition: nono.h:83
Nono::timer
QTimer * timer
Definition: nono.h:96
Dm::Idmsoft::Capture
int Capture(int x1, int y1, int x2, int y2, const QString &file)
Definition: dm.h:7703
Nono::slot_tip
void slot_tip(QString content)
nono窗口提示信息
Definition: nono.cpp:292
Nono::time1
QTime * time1
Definition: nono.h:98
Nono::showskill
void showskill()
打开精灵技能快查窗口
Definition: nono.cpp:469
Nono::slot_shibie
void slot_shibie()
识别对战精灵
Definition: nono.cpp:336
Nono::mouseMovePos
QPoint mouseMovePos
Definition: nono.h:76
xy_memory
double xy_memory(DWORD pid)
读取程序使用内存
Definition: xy.cpp:227
Nono::slot_capture
void slot_capture(bool tmp)
显示对面巅峰阵容-nono举牌
Definition: nono.cpp:238