QT slots 函数

发布于:2024-07-08 ⋅ 阅读:(46) ⋅ 点赞:(0)

文章目录

概述

在Qt中,slots 是一种特殊的成员函数,它们可以与对象发出的信号连接。当信号被触发时,连接的槽函数会被调用。

来个简单的示例吧,如下图:

#include <QObject>
#include <QDebug>

class MyClass : public QObject {
    Q_OBJECT

public:
    MyClass() {
        // 连接信号和槽
        connect(this, &MyClass::someSignal, this, &MyClass::someSlot);
    }

signals:
    void someSignal(); // 声明一个无参数的信号

public slots:
    void someSlot() { // 声明一个无参数的槽函数
        qDebug() << "someSlot called!";
    }

    void anotherSlot(int value) { // 声明一个有参数的槽函数
        qDebug() << "anotherSlot called with value:" << value;
    }
};

int main() {
    MyClass obj;
    obj.emit someSignal(); // 发出信号
    obj.anotherSlot(42); // 直接调用槽函数
    return 0;
}

如果对C++熟悉,可以直接把connect函数改成其他格式,如下是lamda表达式:

#include <QObject>
#include <QDebug>

class MyClass : public QObject {
    Q_OBJECT

public:
    MyClass() {
        // 连接信号和槽
        connect(this, &MyClass::someSignal, this, [this](){
        	qDebug() << "someSlot Called!";  //1将调用写到lamda中
        	//emit anotherSlot(42);			// 2也可以调用另外一个slot函数
		});
    }

signals:
    void someSignal(); // 声明一个无参数的信号

public slots:
   // void someSlot() { // 声明一个无参数的槽函数
   //     qDebug() << "someSlot called!";
   // }

    void anotherSlot(int value) { // 声明一个有参数的槽函数
        qDebug() << "anotherSlot called with value:" << value;
    }
};

int main() {
    MyClass obj;
    obj.emit someSignal(); // 发出信号
    obj.anotherSlot(42); // 直接调用槽函数
    return 0;
}

小结

这篇主要写了qt slots函数,不熟悉qt经常忘记这个,其余的内容对c++程序来说就容易驾驭多了。OK,下篇写点有用的,好玩的内容。


网站公告

今日签到

点亮在社区的每一天
去签到