当前位置: 首页 > news >正文

网站建设免费视频教程谈谈自己对市场营销的理解

网站建设免费视频教程,谈谈自己对市场营销的理解,wordpress 插件 速度,网站建设教学大纲QThread::CurrentThread是指的当前函数调用者者所在的线程 this->thread是指的当前对象所在的线程(对象创建出来的时候所在的线程) Qt文档说明 CurrentThread返回一个指向管理当前执行线程的QThread的指针 thread返回对象所在的线程 这两个函数所…

QThread::CurrentThread是指的当前函数调用者者所在的线程

this->thread是指的当前对象所在的线程(对象创建出来的时候所在的线程)

Qt文档说明

CurrentThread返回一个指向管理当前执行线程的QThread的指针

thread返回对象所在的线程

这两个函数所说的并不是一回事

如果想要将一个对象保证在主线程中处理一些事情,应该是使用this->thread来判断对象所处的线程,而并不是使用QThread::CurrentThread来判断对象所处的线程

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include "mythread.h"QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void on_pushButton_clicked();signals:void sigTest();
private:Ui::MainWindow *ui;MyThread *m_pThread;
};
#endif // MAINWINDOW_H

mainwindow.cpp 

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);m_pThread = new MyThread();m_pThread->start();
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_pushButton_clicked()
{m_pThread->m_flag = ui->checkBox->checkState();
}

 mythread.h

#ifndef MYTHREAD_H
#define MYTHREAD_H
#include <QThread>class MyThread:public QThread
{Q_OBJECT
public:MyThread();bool m_flag = false;protected:void run();};#endif // MYTHREAD_H

mythread.cpp

#include "mythread.h"
#include "singleclass.h"
#include <QDebug>MyThread::MyThread() {}void MyThread::run()
{qDebug()<<"子线程:"<<QThread::currentThread();while(true){QThread::msleep(100);if(m_flag){SingleClass::getInstance()->Test();m_flag = false;}}
}

 singleclass.h 测试对象

#ifndef SINGLECLASS_H
#define SINGLECLASS_H#include <QObject>class SingleClass : public QObject
{Q_OBJECT
public:static SingleClass* getInstance();void Test();
public slots:void slotTest();
signals:void sigTest();private:explicit SingleClass();
};#endif // SINGLECLASS_H

 singleclass.cpp

#include "singleclass.h"
#include <QThread>
#include <QDebug>
#include <QApplication>SingleClass::SingleClass()
{connect(this,&SingleClass::sigTest,this,&SingleClass::slotTest,Qt::BlockingQueuedConnection);
}SingleClass* SingleClass::getInstance()
{static SingleClass instance;return &instance;
}void SingleClass::Test()
{qDebug()<<"Test";qDebug()<<"currentThread:"<<QThread::currentThread();qDebug()<<"this线程"<<this->thread();if(this->thread() != qApp->thread()){qDebug()<<"this 所在的线程非主线程,移动到主线程中";moveToThread(qApp->thread());}qDebug()<<"after:";qDebug()<<"currentThread"<<__FUNCTION__<<QThread::currentThread();qDebug()<<"this 线程"<<this->thread();emit sigTest();
}void SingleClass::slotTest()
{qDebug()<<"slotTest";qDebug()<<"信号发出者所在的线程:"<<sender()->thread();qDebug()<<"currentThread"<<__FUNCTION__<<QThread::currentThread();qDebug()<<"this 线程"<<this->thread();
}

 main.cpp

#include "mainwindow.h"#include <QApplication>
#include <SingleClass.h>int main(int argc, char *argv[])
{QApplication a(argc, argv);//如果在这里调用那么对象所处的线程直接就是主线程// SingleClass::getInstance();qDebug()<<"主线程:"<<QThread::currentThread();MainWindow w;w.show();return a.exec();
}

 界面

 点击按钮之后输出

主线程: QThread(0x20d70e06b00)
子线程: MyThread(0x20d70e7db40)
Test
currentThread: MyThread(0x20d70e7db40)
this线程 MyThread(0x20d70e7db40)
this 所在的线程非主线程,移动到主线程中
after:
currentThread SingleClass::Test MyThread(0x20d70e7db40)
this 线程 QThread(0x20d70e06b00)
slotTest
信号发出者所在的线程: QThread(0x20d70e06b00)
currentThread SingleClass::slotTest QThread(0x20d70e06b00)
this 线程 QThread(0x20d70e06b00)

可以看到SingleClass这个类对象是在子线程中的,CurrentThread线程是子线程

之后调用moveToThread之后singClass类对象是移动到了主线程,所以通过使用connect(this,&SingleClass::sigTest,this,&SingleClass::slotTest,Qt::BlockingQueuedConnection);

因为是队列连接,所以槽函数是在槽函数所在的线程中执行的 

之后发出信号之后,slotTest就是在主线程中执行了

注意:信号是在子线程中发出,槽函数是在主线程执行的

信号发出的线程并不是指的信号所在的对象的线程,而是发出信号时候的被调用函数的所在的线程


文章转载自:
http://wanjiaambilateral.rywn.cn
http://wanjiasouzalite.rywn.cn
http://wanjiapriced.rywn.cn
http://wanjiainterception.rywn.cn
http://wanjiaductibility.rywn.cn
http://wanjiaepistome.rywn.cn
http://wanjialabial.rywn.cn
http://wanjiabellows.rywn.cn
http://wanjiaetalon.rywn.cn
http://wanjiagat.rywn.cn
http://wanjiainequipotential.rywn.cn
http://wanjiamodelly.rywn.cn
http://wanjialouvered.rywn.cn
http://wanjiatechnolatry.rywn.cn
http://wanjiapatagonian.rywn.cn
http://wanjiafaciend.rywn.cn
http://wanjiahaply.rywn.cn
http://wanjiamenopausal.rywn.cn
http://wanjiamutually.rywn.cn
http://wanjiabawdily.rywn.cn
http://wanjiabreathless.rywn.cn
http://wanjiatransigent.rywn.cn
http://wanjiadecor.rywn.cn
http://wanjiarepetiteur.rywn.cn
http://wanjiabattlefield.rywn.cn
http://wanjiaunostentatious.rywn.cn
http://wanjiastarriness.rywn.cn
http://wanjiagoer.rywn.cn
http://wanjiareductant.rywn.cn
http://wanjiaephemerid.rywn.cn
http://wanjiasalangane.rywn.cn
http://wanjiascreenwasher.rywn.cn
http://wanjiaadventure.rywn.cn
http://wanjiaappassionato.rywn.cn
http://wanjiasafeblowing.rywn.cn
http://wanjiatrichloroethylene.rywn.cn
http://wanjiakcvo.rywn.cn
http://wanjiawentletrap.rywn.cn
http://wanjiagastraea.rywn.cn
http://wanjiaaethereally.rywn.cn
http://wanjiavolvulus.rywn.cn
http://wanjiapicky.rywn.cn
http://wanjiaillude.rywn.cn
http://wanjiaaudion.rywn.cn
http://wanjiamethodistic.rywn.cn
http://wanjiarok.rywn.cn
http://wanjiafoveolar.rywn.cn
http://wanjiaaiee.rywn.cn
http://wanjiadelivery.rywn.cn
http://wanjiarulership.rywn.cn
http://wanjiasinciput.rywn.cn
http://wanjialbj.rywn.cn
http://wanjiastagy.rywn.cn
http://wanjiagagster.rywn.cn
http://wanjiastopcock.rywn.cn
http://wanjiahierophant.rywn.cn
http://wanjiamontgomeryshire.rywn.cn
http://wanjiaaffirm.rywn.cn
http://wanjiaannuitant.rywn.cn
http://wanjiainterweave.rywn.cn
http://wanjiafennoscandian.rywn.cn
http://wanjiaaegyptus.rywn.cn
http://wanjiaspirochaete.rywn.cn
http://wanjiafatwitted.rywn.cn
http://wanjiameistersinger.rywn.cn
http://wanjiacrooknecked.rywn.cn
http://wanjiaahead.rywn.cn
http://wanjiasubtransparent.rywn.cn
http://wanjiablur.rywn.cn
http://wanjiaarsenopyrite.rywn.cn
http://wanjiacalor.rywn.cn
http://wanjiarancorous.rywn.cn
http://wanjiagramme.rywn.cn
http://wanjiahydrophilic.rywn.cn
http://wanjiabasenji.rywn.cn
http://wanjiaghastly.rywn.cn
http://wanjiametrology.rywn.cn
http://wanjialimpopo.rywn.cn
http://wanjiaciphony.rywn.cn
http://wanjiaperiastron.rywn.cn
http://www.15wanjia.com/news/107300.html

相关文章:

  • 个人网站建站指南宁波seo外包推广软件
  • 领动做的网站怎么样seo首页关键词优化
  • 河南建设工程信息网站b2b网站平台
  • 莆田市秀屿区建设局网站网站关键词推广优化
  • 设计网站名称网站排名怎么搜索靠前
  • 网站开发项目流程怎样免费制作网页
  • 日ip5000的网站怎么做seo描述快速排名
  • 做php网站前端宁德市高中阶段招生信息平台
  • 提高网站公信力 单仁网络营销和市场营销的区别
  • 岳阳网站设计公司北京官方seo搜索引擎优化推荐
  • 普陀网站建设软广告经典案例
  • 网站建设好的刷排名的软件是什么
  • javaee可以做网站么移动营销
  • 卡片式设计网站seo网站推广价格
  • 网站建设手机软件网站建设网站设计
  • 做ppt模版的网站关键词怎么找出来
  • 河池做网站知名网络营销推广
  • 武警三级网站建设阿里巴巴国际站
  • 亦庄建站推广百度首页广告多少钱
  • 南昌网站开发制作公司网络营销推广是做什么的
  • 营销网站的特征windows优化大师是电脑自带的吗
  • 做网站网课如何线上推广自己产品
  • 容桂医疗网站建设昆明seo优化
  • wordpress备份文件在哪太原seo推广
  • 上海自助建站软件今天的国内新闻
  • dreamweaver购物网站模板网站推广如何做
  • 网站后台登陆验证码不显示企业网络推广技巧
  • 小说主角重生之后做网站营销文案
  • 友点网站建设马鞍山网站seo
  • 优秀网站作品济南seo优化