头文件 mainwindow.h
#include <QMainWindow>
typdef struct {
int a;
int b;
}test;
Q_DECLARE_METATYPE(test) //在定义结构体之后,要调用Q_DECLARE_METATYPE,向QT声明这个结构体
class MainWindow:public QMainWindow
{
public:
explicit MainWindow(QWidget *parent=0);
~MainWindow;
signals:
void startTest(test mTest);
public slots:
void slotTest(test mTest);
private:
UI::MainWindow *ui;
}
源文件 .cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QVariant>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{
ui->setupUi(this);
qRegisterMetaType<QVariant>("QVariant"); //调用qRegisterMetaType()注册此结构体
test test1;
test1.a = 1;
test1.b = 2;
QVariant mQVariant ;
mQVariant .setValue(test1);
connect (this,&startTest,this,&slotTest);
connect (ui->pushButton,&QPushButton::clicked,[=](){
emit startTest(test1);
});
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::slotTest(test mTest)
{
qDebug()<<"a=="<<mTest.a<<"b=="<<mTest.b;
}