zl程序教程

您现在的位置是:首页 >  工具

当前栏目

QT中的简单而强大的信号与槽机制

Qt 简单 机制 强大 信号
2023-09-27 14:20:16 时间

写了段信号、槽的实验程序,发现信号、槽的类声明必须在头文件中才能正确编译,因为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();
}