提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、使用qt多线程代码展示模型数据
代码如下(示例):
#pragma execution_character_set("utf-8")//防止搜索框中乱码
#include "QtWidgetsApplication1.h"
#include"AI.h"
#include<QThread>
#include<QDebug>
#include<QString>
#include<QMetaType>//QT传参数的头文件
#include<QDebug>
#include <qtextcodec.h>
QtWidgetsApplication1::QtWidgetsApplication1(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
QThread* q1 = new QThread;//子线程对象
AI* ai = new AI;//任务对象
ai->moveToThread(q1);//使用任务对象,把对象的事件放到QThread对象中,也就是一个线程中去执行
ai->SetID(1);
QImage img("F:/demo/test.png");
qRegisterMetaType<std::vector<Object> >("std::vector<Object>");//Q传参数的必备
connect(this, &QtWidgetsApplication1::working, ai, &AI::Detect);//触发槽函数
//获取数据展示
connect(ai, &AI::Result, this, [=](std::vector<Object>r) {
qDebug() << "44444";
ui.textEdit->setText("图片的信息:信息框,类别,执行率");
for (int i = 0; i <r.size(); i++)
{ qDebug()<<i;
//ui.textEdit->setText();
QString info = QString::number(r[i].prob) + " " + QString::number(r[i].label);
ui.textEdit->setText("111");
}
});
connect(ui.pushButton, &QPushButton::clicked, this,[=](){
emit working(img,1,1);
qDebug() << "1111";
q1->start();//开启q1线程
});
}
QtWidgetsApplication1::~QtWidgetsApplication1()
{
}
总结
q1->start();线程要先开启才能使用子线程信号和槽函数。https://blog.csdn.net/yi_chengyu/article/details/125031054