C

信号结构

struct Qul::Signal

允许创建可以从不链接 QML 的信号。 更多...

头文件 #include <qul/signal.h>
自从Qt Quick Ultralite 1.0

公共函数

boolisConnected() const
voidoperator()() const

详细描述

当将信号作为派生自 Qul::ObjectQul::Singleton 的类的成员时,qmlinterfacegenerator 工具将生成一个可以用 onXxxx:{...} 语法从 QML 代码连接的信号。

Signal 处理的模板参数应为函数签名,包括参数名称,qmlinterfacegenerator 使用它们将它们暴露给 qml。

示例

class MySingleton : public Qul::Singleton<MySingleton> {
public:
    Qul::Signal<void()> changed; // signal without arguments
    Qul::Signal<void(int key, qreal value)> newValue; // signal with arguments
};

这可以像以下从 QML 使用

MySingleton.onNewValue: console.log("Got a new value for key", key, ": ", value);

要从 C++ 代码发出信号,您可以使用 operator()。

MySingleton::instance().newValue(1, 3.141592);

如果成员函数被调用的方式与 QML 信号处理程序完全相同,它将被视为没有以 on 前缀和以小写字母开头命名的信号。

示例

class MyObject : public Qul::Object {
public:
    Qul::Signal<void()> onFoo; // signal named as QML signal handler
};

这可以像以下从 QML 使用

Item {
    MyObject {
        id: myObject
        onFoo: console.log("Foo signal invoked.")
    }

    MouseArea: {
        onClicked: myObject.foo();
    }
}

成员函数文档

bool Signal::isConnected() const

如果任何槽或 QML 信号处理程序连接到此信号实例,则返回 true,否则返回 false

注意: 槽目前不是 Qt Quick Ultralite 提供的公开 API 的一部分

void Signal::operator()() const

发出信号。

注意: 如果模板参数 T 不是 void 或空,则此调用运算符将具有参数。

在某些 Qt 许可下可用。
了解更多信息。