我有这个问题,从myclass对象发送数组到名为receive()的myclass2函数。数组的名称是myclass中的probesTab1。
我尝试使用connect方法来执行此操作。
我有这个错误: 对myclass2 :: receive(int *)
的未定义引用我确信这是一些基本知识,但我不能动了几天。
“myclass.h”
#ifndef MYCLASS_H
#define MYCLASS_H
#include <QObject>
class myclass : public QObject
{
Q_OBJECT
public:
explicit myclass(QObject *parent = nullptr);
int probesTab1[3];
signals:
void pass(int * tab);
public slots:
};
#endif // MYCLASS_
myclass2.h
#ifndef MYCLASS2_H
#define MYCLASS2_H
#include <QObject>
class myclass2 : public QObject
{
Q_OBJECT
public:
myclass2();
int array[3];
public slots:
void receive(int *tab);
};
#endif // MYCLASS2_H
主
#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
#include "myclass.h"
#include "myclass2.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
myclass Class1;
myclass2 Class2;
for(int i = 0; i<3 ; i++)
{
Class1.probesTab1[i] = i;
//I need this array to go into myclass2 function named receive()
}
int *ptr;
ptr = Class1.probesTab1;
QObject::connect(&Class1,SIGNAL(pass(int)),&Class2,SLOT(receive(int)));
emit Class1.pass(ptr);
return a.exec();
}
myclass2.cpp
#include "myclass2.h"
#include <QDebug>
myclass2::myclass2()
{
}
void receive(int values[])
{
for(int i = 0; i<3; i++)
{
qDebug() << values[i];
}
}
答案 0 :(得分:-3)
最好以here所述的特定方式进行此类操作。
但在练习时,请详细了解QObject::connect
只需更改连接
即可 QObject::connect(&Class1,SIGNAL(pass(int*)),&Class2,SLOT(receive(int*)));
并接收功能
void myclass2::receive(int *values)
{
for(int i = 0; i<3; i++)
{
qDebug() << values[i];
}
}