Files
ds-628/HanddleAI/QtHistoryLogList.cpp
T

667 lines
21 KiB
C++
Raw Normal View History

2024-09-27 14:31:22 +08:00
#include "QtHistoryLogList.h"
#include "QScreen"
#pragma execution_character_set("utf-8")
QtHistoryLogList::QtHistoryLogList(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
this->setMouseTracking(true);
ui.centralWidget->setMouseTracking(true);
ui.frame->setMouseTracking(true);
ui.title->setMouseTracking(true);
ui.label_icon->setStyleSheet("image: url(./Icon/logo_Dongsheng.png);");
ui.pushButton_min->setText("");
ui.pushButton_close->setText("");
ui.pushButton_max->setText("");
ui.pushButton_min->setStyleSheet("background-color:transparent;image: url(./Icon/min_n.png);");
ui.pushButton_close->setStyleSheet("background-color:transparent;image: url(./Icon/close_n.png);");
ui.pushButton_max->setStyleSheet("background-color:transparent;image: url(./Icon/Max_n.png);");
connect(ui.pushButton_min, &QPushButton::clicked, [=]() {
this->showMinimized();
qApp->processEvents();
});
connect(ui.pushButton_close, &QPushButton::clicked, [=]() {
this->close();
qApp->processEvents();
});
QScreen* screen = QGuiApplication::primaryScreen();
QSize screenSize = screen->size();
static int screenWidth = screenSize.width();
static int screenHeight = screenSize.height();
qDebug() << "Screen resolution: " << screenWidth << "x" << screenHeight;
static int maxClickedNum = 1;
connect(ui.pushButton_max, &QPushButton::clicked, [=]() {
if (maxClickedNum)
{
//ui.pushButton_max->setStyleSheet("background-color:transparent;image: url(Max_n.png);");
//ui.pushButton_max->setToolTip(tr("向下还原"));
setWindowFlags(Qt::FramelessWindowHint); //隐藏标题栏
this->showMaximized();
maxClickedNum = 0;
}
else {
//ui.pushButton_max->setStyleSheet("background-color:transparent;image: url(Max_n.png);");
//ui.pushButton_max->setToolTip(tr("最大化"));
setWindowFlags(Qt::FramelessWindowHint); //隐藏标题栏
this->showNormal();
this->resize(screenWidth / 3 * 2, screenHeight / 3 * 2);
this->move(screenWidth / 5, screenHeight / 5);
maxClickedNum = 1;
}
qApp->processEvents();
});
setWindowFlags(Qt::FramelessWindowHint); //隐藏标题栏
//this->showNormal();
this->resize(screenWidth / 3 * 2, screenHeight / 3 * 2);
this->move(screenWidth / 5, screenHeight / 5);
ui.lineEdit_match->setText("");
ui.pushButton_match->setStyleSheet("QPushButton{background-color:rgb(68, 74, 80);border-radius:10px;}"
"QPushButton:hover{ background-color: rgb(0, 0, 0); border:none; color:rgb(255, 255, 255); }");
//匹配内容
connect(ui.pushButton_match, &QPushButton::clicked, [=]() {
ifKidLog = false;
matchList.clear();
for (int i = 0; i < myhistoryLogList.size(); i++)
{
if (myhistoryLogList[i].contains(ui.lineEdit_match->text()))
matchList.append(myhistoryLogList[i]);
if (i % 100000 == 0)
{
qDebug() << "pushButton_match::" << i;
qApp->processEvents();
}
}
check_qsLines.clear();
check_qsLines.append(matchList);
//刷新log显示;
ifSettingEdit = true;
ui.plainTextEdit->clear();
ui.verticalScrollBar->setMaximum(check_qsLines.size());
if (check_qsLines.size() > pageLines)
{
for (int i = 0; i < pageLines; i++)
ui.plainTextEdit->appendPlainText(check_qsLines[i]);
lastBar = pageLines;
}
else
{
for (int i = 0; i < check_qsLines.size(); i++)
ui.plainTextEdit->appendPlainText(check_qsLines[i]);
lastBar = check_qsLines.size();
}
ui.plainTextEdit->verticalScrollBar()->setValue(0);
if (check_qsLines.size() > 0)
{
QString lineLast = check_qsLines.last();
qDebug() << "lineLast::" << lineLast;
}
qApp->processEvents();
ifSettingEdit = false;
ifKidLog = true;
QMessageBox::information(0, tr("提示"), tr("操作完成"), tr("确定"));
});
ui.pushButton_writeMatch->setStyleSheet("QPushButton{background-color:rgb(68, 74, 80);border-radius:10px;}"
"QPushButton:hover{ background-color: rgb(0, 0, 0); border:none; color:rgb(255, 255, 255); }");
//写匹配
connect(ui.pushButton_writeMatch, &QPushButton::clicked, [=]() {
QFile savefile;
QStringList myFList;// = FUNCTIONList[i];
if (ui.lineEdit_match->text().contains("::"))
myFList = ui.lineEdit_match->text().split("::");
else
myFList.append(ui.lineEdit_match->text());
QString newQS;
for (int s = 0; s < myFList.size(); s++)
newQS += myFList[s] + "-";
QDir dir = QApplication::applicationDirPath();
QString currPath = dir.path();
QString tmpDate = QDateTime::currentDateTime().toString("yyyy-MM-dd-hh-mm-ss-zzz");
QString LogPath = currPath + "/historyLogList/" + tmpDate;
QString newPath = LogPath + "_" + newQS + ".log";
savefile.setFileName(newPath);
if (!savefile.open(QIODevice::WriteOnly | QIODevice::Append))
{
QString erinfo = savefile.errorString();
return;
}
QTextStream out(&savefile);
for (int j = 0; j < matchList.size(); j++)
{
out << "\r" << matchList[j];
if (j % 100000 == 0)
{
qDebug() << "pushButton_writeMatch::" << j;
qApp->processEvents();
}
}
savefile.close();
qApp->processEvents();
QMessageBox::information(0, tr("提示"), tr("操作完成"), tr("确定"));
});
connect(ui.verticalScrollBar, &QScrollBar::valueChanged, [=]() {
int firstNum = 0;
int lastNum = 0;
if (ifKidLog == false)
{
if (myhistoryLogList.size() <= pageLines)
return;
//下翻
if (lastBar <= ui.verticalScrollBar->value())
{
if (ui.verticalScrollBar->value() <= pageLines)
return;
ifSettingEdit = true;
//下翻大幅
if ((lastBar + pageLines) < ui.verticalScrollBar->value())
{
ui.plainTextEdit->clear();
firstNum = ui.verticalScrollBar->value();
lastNum = std::min(firstNum + pageLines, ui.verticalScrollBar->maximum());
firstNum = lastNum - pageLines;
for (int i = firstNum; i < lastNum; i++)
ui.plainTextEdit->appendPlainText(myhistoryLogList[i]);
lastBar = ui.verticalScrollBar->value();
ui.plainTextEdit->verticalScrollBar()->setValue(std::max(5, ui.plainTextEdit->verticalScrollBar()->maximum() - 20));
}
else if ((lastBar + 3) < ui.verticalScrollBar->value())
{
firstNum = ui.verticalScrollBar->value() - pageLines;
firstNum = std::max(firstNum, 0);
lastNum = std::min(firstNum + pageLines, ui.verticalScrollBar->maximum());
firstNum = lastNum - pageLines;
/*for(int i=0;i< firstNum-lastBar;i++)
ui.plainTextEdit->c*/
ui.plainTextEdit->clear();
for (int i = firstNum; i < lastNum; i++)
ui.plainTextEdit->appendPlainText(myhistoryLogList[i]);
lastBar = ui.verticalScrollBar->value();
ui.plainTextEdit->verticalScrollBar()->setValue(std::max(5, ui.plainTextEdit->verticalScrollBar()->maximum() - 20));
}
else
{
lastNum = ui.verticalScrollBar->value() + 3;
lastNum = std::min(lastNum, ui.verticalScrollBar->maximum());
firstNum = lastNum - pageLines;
ui.plainTextEdit->clear();
for (int i = firstNum; i < lastNum; i++)
ui.plainTextEdit->appendPlainText(myhistoryLogList[i]);
lastBar = ui.verticalScrollBar->value();
ui.plainTextEdit->verticalScrollBar()->setValue(ui.plainTextEdit->verticalScrollBar()->maximum() - 4);
}
}
//上翻
else
{
if (ui.verticalScrollBar->maximum() - ui.verticalScrollBar->value() <= pageLines)
return;
ifSettingEdit = true;
//上翻大幅
if ((lastBar - pageLines) > ui.verticalScrollBar->value())
{
ui.plainTextEdit->clear();
firstNum = ui.verticalScrollBar->value();
lastNum = std::min(firstNum + pageLines, ui.verticalScrollBar->maximum());
firstNum = lastNum - pageLines;
for (int i = firstNum; i < lastNum; i++)
ui.plainTextEdit->appendPlainText(myhistoryLogList[i]);
lastBar = ui.verticalScrollBar->value();
}
else if ((lastBar - 3) > ui.verticalScrollBar->value())
{
firstNum = ui.verticalScrollBar->value() - pageLines;
firstNum = std::max(firstNum, 0);
lastNum = std::min(firstNum + pageLines, ui.verticalScrollBar->maximum());
firstNum = lastNum - pageLines;
/*for(int i=0;i< firstNum-lastBar;i++)
ui.plainTextEdit->c*/
ui.plainTextEdit->clear();
for (int i = firstNum; i < lastNum; i++)
ui.plainTextEdit->appendPlainText(myhistoryLogList[i]);
lastBar = ui.verticalScrollBar->value();
}
else
{
firstNum = lastBar - 3;
firstNum = std::max(firstNum, 0);
lastNum = std::min(firstNum + pageLines, ui.verticalScrollBar->maximum());
firstNum = lastNum - pageLines;
ui.plainTextEdit->clear();
for (int i = firstNum; i < lastNum; i++)
ui.plainTextEdit->appendPlainText(myhistoryLogList[i]);
lastBar = ui.verticalScrollBar->value();
}
if (ui.verticalScrollBar->value() == 0)
ui.plainTextEdit->verticalScrollBar()->setValue(4);
ui.plainTextEdit->verticalScrollBar()->setValue(4);
}
}
else
{
if (check_qsLines.size() <= pageLines)
return;
//下翻
if (lastBar <= ui.verticalScrollBar->value())
{
if (ui.verticalScrollBar->value() <= pageLines)
return;
ifSettingEdit = true;
//下翻大幅
if ((lastBar + pageLines) < ui.verticalScrollBar->value())
{
ui.plainTextEdit->clear();
firstNum = ui.verticalScrollBar->value();
lastNum = std::min(firstNum + pageLines, ui.verticalScrollBar->maximum());
firstNum = lastNum - pageLines;
for (int i = firstNum; i < lastNum; i++)
ui.plainTextEdit->appendPlainText(check_qsLines[i]);
lastBar = ui.verticalScrollBar->value();
ui.plainTextEdit->verticalScrollBar()->setValue(std::max(5, ui.plainTextEdit->verticalScrollBar()->maximum() - 20));
}
else if ((lastBar + 3) < ui.verticalScrollBar->value())
{
firstNum = ui.verticalScrollBar->value() - pageLines;
firstNum = std::max(firstNum, 0);
lastNum = std::min(firstNum + pageLines, ui.verticalScrollBar->maximum());
firstNum = lastNum - pageLines;
/*for(int i=0;i< firstNum-lastBar;i++)
ui.plainTextEdit->c*/
ui.plainTextEdit->clear();
for (int i = firstNum; i < lastNum; i++)
ui.plainTextEdit->appendPlainText(check_qsLines[i]);
lastBar = ui.verticalScrollBar->value();
ui.plainTextEdit->verticalScrollBar()->setValue(std::max(5, ui.plainTextEdit->verticalScrollBar()->maximum() - 20));
}
else
{
lastNum = ui.verticalScrollBar->value() + 3;
lastNum = std::min(lastNum, ui.verticalScrollBar->maximum());
firstNum = lastNum - pageLines;
ui.plainTextEdit->clear();
for (int i = firstNum; i < lastNum; i++)
ui.plainTextEdit->appendPlainText(check_qsLines[i]);
lastBar = ui.verticalScrollBar->value();
ui.plainTextEdit->verticalScrollBar()->setValue(ui.plainTextEdit->verticalScrollBar()->maximum() - 4);
}
}
//上翻
else
{
if (ui.verticalScrollBar->maximum() - ui.verticalScrollBar->value() <= pageLines)
return;
ifSettingEdit = true;
//上翻大幅
if ((lastBar - pageLines) > ui.verticalScrollBar->value())
{
ui.plainTextEdit->clear();
firstNum = ui.verticalScrollBar->value();
lastNum = std::min(firstNum + pageLines, ui.verticalScrollBar->maximum());
firstNum = lastNum - pageLines;
for (int i = firstNum; i < lastNum; i++)
ui.plainTextEdit->appendPlainText(check_qsLines[i]);
lastBar = ui.verticalScrollBar->value();
}
else if ((lastBar - 3) > ui.verticalScrollBar->value())
{
firstNum = ui.verticalScrollBar->value() - pageLines;
firstNum = std::max(firstNum, 0);
lastNum = std::min(firstNum + pageLines, ui.verticalScrollBar->maximum());
firstNum = lastNum - pageLines;
/*for(int i=0;i< firstNum-lastBar;i++)
ui.plainTextEdit->c*/
ui.plainTextEdit->clear();
for (int i = firstNum; i < lastNum; i++)
ui.plainTextEdit->appendPlainText(check_qsLines[i]);
lastBar = ui.verticalScrollBar->value();
}
else
{
firstNum = lastBar - 3;
firstNum = std::max(firstNum, 0);
lastNum = std::min(firstNum + pageLines, ui.verticalScrollBar->maximum());
firstNum = lastNum - pageLines;
ui.plainTextEdit->clear();
for (int i = firstNum; i < lastNum; i++)
ui.plainTextEdit->appendPlainText(check_qsLines[i]);
lastBar = ui.verticalScrollBar->value();
}
if (ui.verticalScrollBar->value() == 0)
ui.plainTextEdit->verticalScrollBar()->setValue(4);
ui.plainTextEdit->verticalScrollBar()->setValue(4);
}
}
//ifSettingEdit = false;
qApp->processEvents();
ifSettingEdit = false;
});
ui.plainTextEdit->verticalScrollBar()->setMaximum(pageLines);
static int last_plainValue = 0;
connect(ui.plainTextEdit->verticalScrollBar(), &QScrollBar::valueChanged, [=]()
{
if (ifSettingEdit)
{
return;
}
int m_value = ui.plainTextEdit->verticalScrollBar()->value();
int m = ui.verticalScrollBar->maximum();
if (ui.plainTextEdit->verticalScrollBar()->value() == 0)
if (lastBar == ui.verticalScrollBar->maximum())
ui.verticalScrollBar->setValue(std::max(0, lastBar - pageLines - 3));
else
ui.verticalScrollBar->setValue(std::max(0, lastBar - 3));
else if (ui.plainTextEdit->verticalScrollBar()->value() >= ui.plainTextEdit->verticalScrollBar()->maximum() - 2)
if (lastBar < pageLines)
ui.verticalScrollBar->setValue(std::min(ui.verticalScrollBar->maximum(), lastBar + ui.plainTextEdit->verticalScrollBar()->maximum() + 3));
else ui.verticalScrollBar->setValue(std::min(ui.verticalScrollBar->maximum(), lastBar + 3));
/*if (last_plainValue < m_value)
{
last_plainValue = m_value;
ui.verticalScrollBar->setValue(std::max(0, lastBar + last_plainValue - m_value));
}
else if (last_plainValue > m_value)
{
last_plainValue = m_value;
ui.verticalScrollBar->setValue(std::min(ui.verticalScrollBar->maximum(), lastBar + last_plainValue - m_value));
}*/
/*qDebug() << "ui.verticalScrollBar value::" << ui.verticalScrollBar->value();
qDebug() << "verticalScrollBar::" << ui.plainTextEdit->verticalScrollBar()->value();
qDebug() << "verticalScrollBar:maximum:" << ui.plainTextEdit->verticalScrollBar()->maximum();*/
});
}
void QtHistoryLogList::setData(QQueue<QString> historyLogList)
{
myhistoryLogList.clear();
//myhistoryLogList = historyLogList;
for (int i = 0; i < historyLogList.size(); i++)
myhistoryLogList.enqueue(historyLogList[i]);
pageLines = 200;
ui.plainTextEdit->clear();
ifSettingEdit = true;
ui.verticalScrollBar->setMaximum(myhistoryLogList.size());
if (myhistoryLogList.size() > pageLines)
{
for (int i = 0; i < pageLines; i++)
ui.plainTextEdit->appendPlainText(myhistoryLogList[i]);
lastBar = pageLines;
}
else
{
for (int i = 0; i < myhistoryLogList.size(); i++)
ui.plainTextEdit->appendPlainText(myhistoryLogList[i]);
lastBar = myhistoryLogList.size();
}
ui.plainTextEdit->verticalScrollBar()->setValue(0);
if (myhistoryLogList.size() > 0)
{
QString lineLast = myhistoryLogList.last();
qDebug() << "lineLast::" << lineLast;
}
qApp->processEvents();
ifSettingEdit = false;
}
QtHistoryLogList::~QtHistoryLogList()
{}
#define MOUSE_MARGIN 2
//计算鼠标位置
QtHistoryLogList::MousePoss QtHistoryLogList::calcmouseposs(QPoint p)
{
QtHistoryLogList::MousePoss mp;
if (p.x() < MOUSE_MARGIN && p.y() < MOUSE_MARGIN)
mp = QtHistoryLogList::MousePoss::LeftUp; //左上
else if (p.x() > MOUSE_MARGIN && p.y() < MOUSE_MARGIN && p.x() < this->width() - MOUSE_MARGIN)
mp = QtHistoryLogList::MousePoss::Up; //上
else if (p.x() > this->width() - MOUSE_MARGIN && p.y() < MOUSE_MARGIN)
mp = QtHistoryLogList::MousePoss::RightUp; //右上
else if (p.x() > this->width() - MOUSE_MARGIN && p.y() > MOUSE_MARGIN && p.y() < this->height() - MOUSE_MARGIN)
mp = QtHistoryLogList::MousePoss::Right; //右
else if (p.x() > this->width() - MOUSE_MARGIN && p.y() > this->height() - MOUSE_MARGIN)
mp = QtHistoryLogList::MousePoss::RightDown; //右下
else if (p.x() > MOUSE_MARGIN && p.x() < this->width() - MOUSE_MARGIN && p.y() > this->height() - MOUSE_MARGIN)
mp = QtHistoryLogList::MousePoss::Down; //下
else if (p.x() < MOUSE_MARGIN && p.y() > this->height() - MOUSE_MARGIN)
mp = QtHistoryLogList::MousePoss::LeftDown; //左下
else if (p.x() < MOUSE_MARGIN && p.y() < this->height() - MOUSE_MARGIN && p.y() > MOUSE_MARGIN)
mp = QtHistoryLogList::MousePoss::Left; //左
else
mp = QtHistoryLogList::MousePoss::Middle; //中间
return mp;
}
//修改鼠标样式
void QtHistoryLogList::setCursorType(QtHistoryLogList::MousePoss type)
{
Qt::CursorShape cursor;
switch (type)
{
case QtHistoryLogList::MousePoss::LeftUp:
case QtHistoryLogList::MousePoss::RightDown:
cursor = Qt::SizeFDiagCursor;
break;
case QtHistoryLogList::MousePoss::Up:
case QtHistoryLogList::MousePoss::Down:
cursor = Qt::SizeVerCursor;
break;
case QtHistoryLogList::MousePoss::RightUp:
case QtHistoryLogList::MousePoss::LeftDown:
cursor = Qt::SizeBDiagCursor;
break;
case QtHistoryLogList::MousePoss::Right:
case QtHistoryLogList::MousePoss::Left:
cursor = Qt::SizeHorCursor;
break;
default:
cursor = Qt::ArrowCursor;
break;
}
setCursor(cursor);
}
//改变窗口的大小
void QtHistoryLogList::changeWindowSize(QtHistoryLogList::MousePoss type, QRect& wid, QPoint ptemp, int minWidth, int minHeight)
{
switch (type)//改变窗口的大小
{
case QtHistoryLogList::MousePoss::LeftUp:
{
QPoint pos = wid.topLeft();
if (wid.width() > minWidth || ptemp.x() < 0)
pos.rx() = pos.rx() + ptemp.x();
if (wid.height() > minHeight || ptemp.y() < 0)
pos.ry() = pos.ry() + ptemp.y();
wid.setTopLeft(pos);
break;//左上角
}
case QtHistoryLogList::MousePoss::RightUp:
{
QPoint pos = wid.topRight();
if (wid.width() > minWidth || ptemp.x() > 0)
pos.rx() = pos.rx() + ptemp.x();
if (wid.height() > minHeight || ptemp.y() < 0)
pos.ry() = pos.ry() + ptemp.y();
wid.setTopRight(pos);
break;//右上角
}
case QtHistoryLogList::MousePoss::LeftDown:
{
QPoint pos = wid.bottomLeft();
if (wid.width() > minWidth || ptemp.x() < 0)
pos.rx() = pos.rx() + ptemp.x();
if (wid.height() > minHeight || ptemp.y() > 0)
pos.ry() = pos.ry() + ptemp.y();
wid.setBottomLeft(pos);
break;//左下角
}
case QtHistoryLogList::MousePoss::RightDown:
{
QPoint pos = wid.bottomRight();
if (wid.width() > minWidth || ptemp.x() > 0)
pos.rx() = pos.rx() + ptemp.x();
if (wid.height() > minHeight || ptemp.y() > 0)
pos.ry() = pos.ry() + ptemp.y();
wid.setBottomRight(pos);
break;//右下角
}
case QtHistoryLogList::MousePoss::Up:
{
int topY = wid.top();
if (wid.height() > minHeight || ptemp.y() < 0)
topY = topY + ptemp.y();
wid.setTop(topY);
break;//上
}
case QtHistoryLogList::MousePoss::Left:
{
int leftX = wid.left();
if (wid.width() > minWidth || ptemp.x() < 0)
leftX = leftX + ptemp.x();
wid.setLeft(leftX);
break;//左
}
case QtHistoryLogList::MousePoss::Right:
{
int rightX = wid.right();
if (wid.width() > minWidth || ptemp.x() > 0)
rightX = rightX + ptemp.x();
wid.setRight(rightX);
break;//右
}
case QtHistoryLogList::MousePoss::Down:
{
int botY = wid.bottom();
if (wid.height() > minHeight || ptemp.y() > 0)
botY = botY + ptemp.y();
wid.setBottom(botY);
break;//下
}
default:
break;
}
}
//三个鼠标事件的重写
void QtHistoryLogList::mousePressEvent(QMouseEvent* e)
{
if (e->button() == Qt::LeftButton) //鼠标左键按下
{
m_lastPos = e->globalPos();
e->ignore();
}
}
//鼠标移动
void QtHistoryLogList::mouseMoveEvent(QMouseEvent* e)
{
//最大化状态,鼠标是否在标题栏,拖拽还原
if (this->isMaximized())
{
if (ui.title->geometry().contains(this->mapFromGlobal(QCursor::pos())) && e->buttons() == Qt::LeftButton)
{
QPoint ptemp = e->globalPos();
if (ptemp != m_lastPos)
{
this->showNormal();
}
}
}
QtHistoryLogList::MousePoss curPos = calcmouseposs(e->pos());
if (!e->buttons())
{
setCursorType(curPos);
mp_curPos = curPos;
}
if (e->buttons() == Qt::LeftButton) //坐标左键按下并移动
{
QPoint ptemp = e->globalPos();
ptemp = ptemp - m_lastPos; //鼠标移动的偏移量
if (mp_curPos == QtHistoryLogList::MousePoss::Middle && ui.title->geometry().contains(this->mapFromGlobal(QCursor::pos()))
&& !ui.pushButton_max->geometry().contains(this->mapFromGlobal(QCursor::pos()))
&& !ui.pushButton_min->geometry().contains(this->mapFromGlobal(QCursor::pos()))
&& !ui.pushButton_close->geometry().contains(this->mapFromGlobal(QCursor::pos())))
{
move(ptemp + pos());
}
else
{
QRect wid = geometry();
int minWidth = this->minimumWidth();
int minHeight = this->minimumHeight();
if (ptemp.x() < 50 && ptemp.x() > -50)
{
changeWindowSize(mp_curPos, wid, ptemp, minWidth, minHeight);
//更新大小
setGeometry(wid);
}
}
m_lastPos = e->globalPos();
}
e->ignore();
}
//鼠标释放
void QtHistoryLogList::mouseReleaseEvent(QMouseEvent* e)
{
if (e->button() == Qt::LeftButton && ui.title->geometry().contains(this->mapFromGlobal(QCursor::pos()))
&& !ui.pushButton_max->geometry().contains(this->mapFromGlobal(QCursor::pos()))
&& !ui.pushButton_min->geometry().contains(this->mapFromGlobal(QCursor::pos()))
&& !ui.pushButton_close->geometry().contains(this->mapFromGlobal(QCursor::pos()))) //鼠标左键释放
{
int dx = e->globalX() - m_lastPos.x();
int dy = e->globalY() - m_lastPos.y();
move(x() + dx, y() + dy);
}
QApplication::restoreOverrideCursor();//恢复鼠标指针性状
e->ignore();
}