Qt中的SLOT类型是什么?
What is the type of SLOT in Qt?
digitButtons[i] = createButton (QString::number(i), SLOT(digitClicked()));
和
Button *Calculator::createButton(const QString &text, const char *member)
{
Button *button = new Button(text);
connect(button, SIGNAL(clicked()), this, member);
return button;
}
该代码来自 Qt 文档的计算器示例。
在这个文档http://doc.qt.io/qt-4.8/signalsandslots.html中,我找不到SLOT的类型。
哪里提到SLOt是QString?
SLOT 和 SIGNAL 都是 qt MOC 的宏。
它们被简单地定义为:
#define SLOT(a) "1"#a
#define SIGNAL(a) "2"#a
在编译阶段之前,MOC 会找到这样的行并使用 C++ 代码生成有效的 .moc 文件,将它们包含在您的项目中,因此,signal\slots 应该可以工作。
是的,如 Starl1ght 所述 SLOT 和 SIGNAL 是元对象编译器的宏,这就是它们没有数据类型的原因。
在您提到的示例中,它使用了 const char * 因为 "SLOT is passed by name" 连接函数。看这里 http://doc.qt.io/qt-4.8/qobject.html#connect
希望这能简要说明什么是 SIGNALS 和 SLOTS。
digitButtons[i] = createButton (QString::number(i), SLOT(digitClicked()));
和
Button *Calculator::createButton(const QString &text, const char *member)
{
Button *button = new Button(text);
connect(button, SIGNAL(clicked()), this, member);
return button;
}
该代码来自 Qt 文档的计算器示例。
在这个文档http://doc.qt.io/qt-4.8/signalsandslots.html中,我找不到SLOT的类型。
哪里提到SLOt是QString?
SLOT 和 SIGNAL 都是 qt MOC 的宏。 它们被简单地定义为:
#define SLOT(a) "1"#a
#define SIGNAL(a) "2"#a
在编译阶段之前,MOC 会找到这样的行并使用 C++ 代码生成有效的 .moc 文件,将它们包含在您的项目中,因此,signal\slots 应该可以工作。
是的,如 Starl1ght 所述 SLOT 和 SIGNAL 是元对象编译器的宏,这就是它们没有数据类型的原因。
在您提到的示例中,它使用了 const char * 因为 "SLOT is passed by name" 连接函数。看这里 http://doc.qt.io/qt-4.8/qobject.html#connect
希望这能简要说明什么是 SIGNALS 和 SLOTS。