qt connect使用自定义类
时间: 2023-12-11 22:28:23 浏览: 186
在Qt中使用自定义类进行connect连接时,需要满足以下条件:
1. 自定义类必须继承自QObject类,并且在类的定义中添加Q_OBJECT宏。
2. 发送者和接收者都需要是QObject的子类(除非槽函数是全局函数、Lambda表达式或者无需接收者)。
具体步骤如下:
1. 在自定义类的头文件中,添加Q_OBJECT宏,并将类声明为继承自QObject。
2. 在类的头文件中,声明所需的信号和槽函数。可以使用任意参数类型和个数。
3. 在类的实现文件中,定义信号和槽函数的具体实现。
4. 在需要连接信号和槽的地方,使用QObject::connect函数进行连接。
下面是一个示例:
```cpp
// MyClass.h
#include <QObject>
class MyClass : public QObject
{
Q_OBJECT
public:
explicit MyClass(QObject *parent = nullptr);
signals:
void mySignal(int value);
public slots:
void mySlot(int value);
};
// MyClass.cpp
#include "MyClass.h"
#include <QDebug>
MyClass::MyClass(QObject *parent) : QObject(parent)
{
}
void MyClass::mySlot(int value)
{
qDebug() << "Received value:" << value;
}
// main.cpp
#include <QCoreApplication>
#include "MyClass.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
MyClass obj1;
MyClass obj2;
QObject::connect(&obj1, &MyClass::mySignal, &obj2, &MyClass::mySlot);
emit obj1.mySignal(42);
return a.exec();
}
```
阅读全文