析构QThread线程退出的问题

qt6
ATTIOT\zhengcy 2021-07-08 14:49:46 +08:00
parent 8d72bf5f42
commit 7fe003ebd0
2 changed files with 22 additions and 13 deletions

25
Qss.cpp
View File

@ -22,7 +22,7 @@
#include <QPainter>
#include <QTimer>
#include <QCoreApplication>
#include <QGraphicsDropShadowEffect>
#define QSSDIALOG_SHADOW_WIDTH 12
#define QSSDIALOG_BODER_WIDTH 0
@ -284,6 +284,16 @@ QssMainWindow::QssMainWindow(QWidget *parent/* = 0*/, Qt::WindowFlags flags/* =
QString css = in.readAll();
qDebug()<<css;
m_frame->setStyleSheet(css);
// QGraphicsDropShadowEffect *shadow_effect = new QGraphicsDropShadowEffect(m_frame);
// shadow_effect->setOffset(0, 0);
// //阴影颜色
// shadow_effect->setColor(QColor(38, 78, 119, 127));
// //阴影半径
// shadow_effect->setBlurRadius(15);
// m_frame->setGraphicsEffect(shadow_effect);
return;
}
@ -1716,19 +1726,18 @@ void QssMaskWidget::paintEvent(QPaintEvent *event)
QWidget::paintEvent(event);
}
QSSASyncFunction::QSSASyncFunction(QWidget *parent)
QSSASyncProcess::QSSASyncProcess(QWidget *parent)
{
this->mParent = parent;
}
QSSASyncFunction::~QSSASyncFunction()
QSSASyncProcess::~QSSASyncProcess()
{
this->mThread.exit(0);
this->mThread.deleteLater();
this->mThread.wait();
this->mThread.terminate();
}
int QSSASyncFunction::Start()
int QSSASyncProcess::Start()
{
this->moveToThread(&mThread);
connect(this, SIGNAL(StartRun()), this, SLOT(Run()));
@ -1739,8 +1748,8 @@ int QSSASyncFunction::Start()
return 0;
}
void QSSASyncFunction::Run()
void QSSASyncProcess::Run()
{
qDebug()<<"test run";
emit(Done());
}

10
Qss.h
View File

@ -477,20 +477,20 @@ private:
};
// 异步执行任务不会阻塞ui线程
class QSSASyncFunction : public QObject{
class QSSASyncProcess : public QObject{
Q_OBJECT
public:
QSSASyncFunction(QWidget *parent = nullptr);
~QSSASyncFunction();
QSSASyncProcess(QWidget *parent = nullptr);
~QSSASyncProcess();
int Start();
signals:
void DonePercent(int);
void Done();
void StartRun();
protected:
protected slots:
virtual void Run();
protected:
QWidget *mParent;
QThread mThread;
};