首页 > 其他分享 >QT自定义结构体的传递

QT自定义结构体的传递

时间:2024-08-22 14:53:09浏览次数:10  
标签:QT 自定义 People TestResult 传递 ui QString ._ testResult

方法1:使用Q_DECLARE_METATYPE(TestResult) 进行声明

1.1声明

#ifndef TESTRESULT_H
#define TESTRESULT_H

#include <QDateTime>
#include <QString>
#include <QMetaType>
//用于测试时更新内容,作为结果导出的依据

class TestResult
{

public:
    int _nid=0;
    int _count=0;
    int _passCount=0;     //通过计数
    int _unPassCount=0;
    QDateTime _startTime;
    QDateTime _endTime;

};
//声明自定义类型 用于消息传递
Q_DECLARE_METATYPE(TestResult);
#endif // TESTRESULT_H

1.2 使用Qvariant 进行打包发送

        //未注册自定结构体,打包发送
        QVariant var;
        var.setValue(TestResult);
        emit UpdateTestResult(var);

1.3信号槽 连接 参数使用Qvariant

signal:
void UpdateTestResult(const QVariant& result);
Slots:
 void ShowTestResuult(const QVariant& testResult);
connect(&Testthread,&TestThread::UpdateTestResult,this,&Form::ShowTestResuult);

 1.4 参数解包

void Form::ShowTestResuult(const QVariant& VartestResult)
{
TestResult testResult =VartestResult.value<TestResult>();
QString str = QString::number( testResult._nid)+"/"+QString::number(testResult._count);
ui->lable_Index->setText(str);
ui->progressBar->setMaximum(testResult._count);
ui->progressBar->setValue(testResult._nid);

ui->lineEdit_startTime->setText(testResult._startTime.toString("yyMMdd-HH:mm:ss"));
ui->lineEdit_endTime->setText(testResult._endTime.toString("yyMMdd-HH:mm:ss"));
ui->lineEdit_passcount->setText(QString::number(testResult._passCount));
ui->lineEdit_unpasscount->setText(QString::number(testResult._unPassCount));

}

 

方法2:使用qRegisterMetaType注册(待验证使用)

#include <QMetaType>
typedef struct People{
int age;
QString name;
}People;

//在使用之前注册:
qRegisterMetaType<People>("People");

//connect函数
connect(sender, SIGNAL(signalPeople(People)),
receiver, SLOT(slotPeople(People)));

 

标签:QT,自定义,People,TestResult,传递,ui,QString,._,testResult
From: https://www.cnblogs.com/bang20221103/p/18373880

相关文章

  • 【python】PyQt5中的QFrame控件,控制图形的边框样式、阴影效果、形状等属性
    ✨✨欢迎大家来到景天科技苑✨✨......
  • 织梦dedeCMS怎么使用arclist标签调用自定义字段
    {dede:arclistrow='10'titlelen='24'orderby='pubdate'idlist=''col='2'}[field:textlink/]([field:pubdatefunction=MyDate('m-d',@me)/])<br/>{/dede:arclist}row=‘10’返回文档列表总数typeid=‘’栏目ID......
  • mybatis-plus配置自定义sqlInjector(使用InsertBatchSomeColumn),出现Invalid bound stat
    项目一开始未引入mybatis-plus,使用的是mybatis,配置文件为xml,有一个配置类中配置了SqlSessionFactory的相关内容。引入mybatis-plus后,想使用InsertBatchSomeColumn遇到Invalidboundstatement(notfound),多处配置发现没有效果并依旧报错,最终在刚才的配置类中的SqlSessionFact......
  • 高效流程办公,相信自定义流程表单开发
    如果要将企业内部的数据做好高效管理,需要借助更优质的软件平台。低代码技术平台够灵活、更高效、易维护、可视化操作等,可以满足日益扩大的业务需求,助力企业做好数据资源管理,共同为实现流程化办公和数字化转型贡献更理想的技术平台解决方案。对于自定义流程表单开发的优势特点,可以......
  • qt静态编译 全自动编译qt静态库 qt5 windows安装qt (2024.2.23)
    全自动编译qt5静态库(2024.2.23)本教程是从无到有配置qt.io和vcpkg实现全自动编译qt5的静态库,使得您可以静态编译qt项目0.安装VisualStudio2022这个我就不多解释了,直接去官网下载社区版本,勾选使用C++的桌面开发安装好就行1.安装qt.io的开发环境1.1下载在线安装包并且配......
  • 【嵌入式裸机开发】智能家居入门7:最新ONENET,MQTT协议接入,最全最新(微信小程序、MQTT协
    智能家居入门7前言一、ONENET云平台创建产品与设备二、STM32端连接服务器前的准备三、STM32端实现四、微信小程序端连接服务器前的准备五、微信小程序端实现六、最终测试前言本篇文章介绍最新ONENET云平台的MQTT协议接入方法,在STM32上实现数据上云与服务器下发数据......
  • VS2022+QT6.7.2 定时器的使用(两种方法)
    目录一、继承QObject定时器事件二、QTimer类三、具体实现一、继承QObject定时器事件  所有继承自QObject的类,都会有一个timerEvent(QTimerEvent*event)的纯虚函数,startTimer()设定定时间隔并启动,再重载这个函数以处理自己的定时任务,多个定时任务用timeId区分,结束后......
  • nginx源码编译自定义版本号
    1.下载1.20.2源码包[root@localhostservice]#cd/data/build/nginx-1.20.2/[[email protected]]#lsautoCHANGESCHANGES.ruconfconfigurecontribhtmlLICENSEMakefilemanobjsREADMEsrc2.在nginx源码包中编辑此文件src/core/nginx.h修......
  • 使用jakarta.validation自定义校验规则
    jakarta.validation是一套数据校验的规范,内置了NotBlank,NotNull,Min,Pattern等校验注解外,还提供了自定义注解进行任意校验规则的扩展。依赖包为:<dependency><groupId>jakarta.validation</groupId><artifactId>jakarta.validation-api</a......
  • 解决lazarus 3.xx后在linux编译为Qt出错方法
    今天用lazarus3.4在银河麒麟将应用编译为Qt5出现以下错误信息:Warning:linker:/usr/bin/ld.bfd:/home/lb/fpcupdeluxe34/lazarus/lcl/units/aarch64-linux/qt5/qtint.o:infunction`QTINT$_$TQTWIDGETSET_$__$$_CREATE$$TQTWIDGETSET':Error:qtint.pp:(.text.n_qtint$_$t......