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 所述 SLOTSIGNAL 是元对象编译器的宏,这就是它们没有数据类型的原因。

在您提到的示例中,它使用了 const char * 因为 "SLOT is passed by name" 连接函数。看这里 http://doc.qt.io/qt-4.8/qobject.html#connect

希望这能简要说明什么是 SIGNALS 和 SLOTS。