的连接功能,这是Qt的信号和槽机制部分是Qt的扩展C++。
connect函数实际上是一个static function of QObject,所以你可以使用它从任何地方,通过简单地包括QObject的: -
#include <QObject>
...
QObject::connect(itemPtr1, SIGNAL(someFunction()), itemPtr2, SLOT(someOtherFunction());
的对象itemPtr1和itemPtr2是指针到从QObject的和支持的信号派生的类的实例和插槽。
为了一类使用信号和插槽机制,就必须继承QObject并声明Q_OBJECT宏: -
class MyClass : public QObject
{
Q_OBJECT // the Q_OBJECT macro, which must be present for signals and slots
public:
MyClass(QObject* parent);
signals:
public slots:
private:
void StandardFunction();
};
由于这一类继承自QObject,它现在已经成为连接直接访问功能,允许调用直接连接: -
QPushButton* loadTextFileButton = new QPushButton("load");
connect(loadTextFileButton, &QPushButton::clicked, []()
{
qDebug()<<"clicked";
});
最后,Qt的5引入信号和槽一种新的语法: -
connect(loadTextFileButton, &QPushButton::clicked, this, &MyClass::StandardFunction);
您可能已经注意到,这里的优点是信号可以连接到未声明为插槽的功能。另外,使用这个语法提供编译时错误检查。
请确保您的类继承自QObject并定义了Q_OBJECT宏:http://www.bogotobogo.com/Qt/Qt5_Q_OBJECT_Macro_Meta_Object.php – TheDarkKnight 2014-09-23 14:10:20
'connect'是QObject的静态方法。你可以编写'QObject :: connect(...' – borisbn 2014-09-23 14:13:55