下面是一个使用信号和槽的代码示例:
#include <QObject>
#include <QDebug>
// 自定义类,继承自QObject
class MyObject : public QObject
{
Q_OBJECT
public:
MyObject(QObject *parent = nullptr) : QObject(parent) {}
public slots:
void mySlot(const QString &message)
{
qDebug() << "Received message:" << message;
}
};
int main()
{
// 创建对象实例
MyObject obj;
// 连接信号与槽
QObject::connect(&obj, &MyObject::mySignal, &obj, &MyObject::mySlot);
// 发射信号,触发槽函数执行
emit obj.mySignal("Hello, World!");
return 0;
}
在上述示例中,我们定义了一个自定义类 MyObject
,它继承自 QObject
。这个类中包含一个槽函数 mySlot
,它接收一个字符串参数并将其打印出来。
在 main
函数中,我们创建了一个 MyObject
类的实例 obj
。然后使用 QObject::connect()
函数连接了对象的信号和槽。这里我们将对象 obj
的 mySignal
信号与对象自身的 mySlot
槽进行了连接。
最后,通过调用 emit obj.mySignal("Hello, World!")
来发射信号。一旦信号被发射,与之连接的槽函数会被调用,并将相应的消息打印输出。
请注意,在使用信号和槽的类中,需要在类定义的开头使用 Q_OBJECT
宏,以便启用 Qt 的元对象系统。这样才能实现信号和槽的连接。
内容由零声教学AI助手提供,问题来源于学员提问