写了段信号、槽的实验程序,发现信号、槽的类声明必须在头文件中才能正确编译,因为QT的预处理程序只处理*.h文件。
main.h 源代码
#ifndef MAIN_H
#define MAIN_H
#include <QObject>
#include <iostream>
using namespace std;
class SignalObject : public QObject
{
Q_OBJECT
signals:
void signal1();
void signal2(int,int);
public:
void send1()
{
emit signal1();
}
void send2(int x, int y)
{
emit signal2(x, y);
}
};
class SlotObject:public QObject
{
Q_OBJECT
public slots:
void slot1()
{
cout << "slot1()" << endl;
}
void slot2(int x, int y)
{
cout << "slot2(" << x << ", " << y << ")" << endl;
}
};
#endif // MAIN_H
main.cpp 源代码
#include <QCoreApplication>
#include "main.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
SignalObject signal;
SlotObject slot;
QObject::connect(&signal, &SignalObject::signal1, &slot, &SlotObject::slot1);
QObject::connect(&signal, &SignalObject::signal2, &slot, &SlotObject::slot2);
signal.send1();
signal.send2(111, 222);
return a.exec();
}
本文深入探讨了QT框架中的信号与槽机制,通过一个实验程序展示了如何在两个类之间建立信号与槽连接,实现跨类的数据通信。文章详细解释了信号、槽的类声明为何必须置于头文件中,以及QT预处理器对*.h文件的处理方式。
1436

被折叠的 条评论
为什么被折叠?



