Qt中的SLOT类型是什么?

时间:2016-11-25 07:04:23

标签: c++ qt 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 docs的计算器示例。

在这篇文档http://doc.qt.io/qt-4.8/signalsandslots.html中,我找不到SLOT的类型。

在哪里提到SLOt是QString?

2 个答案:

答案 0 :(得分:3)

SLOT和SIGNAL都是qt MOC的宏。 它们的定义简单如下:

#define SLOT(a) "1"#a
#define SIGNAL(a) "2"#a

在编译阶段之前,MOC会找到这样的行并生成带有c ++代码的有效.moc文件,将它们包含在你的项目中,因此,signal \ slots应该可以工作。

答案 1 :(得分:3)

是的,如Starl1ght SLOT SIGNAL 所述,是元对象编译器的宏,这就是他们没有数据类型的原因。

在您提到的示例中,它使用 const char *因为“SLOT按名称传递”到连接函数。看看http://doc.qt.io/qt-4.8/qobject.html#connect

希望这能简单地澄清一下SIGNALS和SLOTS。

相关问题