的連接功能,這是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