connect()
Qt,綁定信號和槽原型:
static QMetaObject::Connection connect(const QObject *sender, const char *signal,const QObject *receiver, const char *member, Qt::ConnectionType = Qt::AutoConnection);
static QMetaObject::Connection connect(const QObject *sender, const QMetaMethod &signal,const QObject *receiver, const QMetaMethod &method,Qt::ConnectionType type = Qt::AutoConnection);
inline QMetaObject::Connection connect(const QObject *sender, const char *signal,const char *member, Qt::ConnectionType type = Qt::AutoConnection) const;
Qt::ConnectionType類型:
enum ConnectionType {AutoConnection,DirectConnection,QueuedConnection,BlockingQueuedConnection,UniqueConnection = 0x80};
作用
在Qt中,ConnectionType
是一個枚舉類型,用于指定信號和槽之間的連接類型。它定義了四種類型的連接:
AutoConnection
:這是默認的連接類型,它由Qt::AutoConnection
指定。如果發送對象和接收對象是同一個對象的子對象,或者發送對象和接收對象之間存在繼承關系,那么信號和槽之間的連接將被視為AutoConnection
類型。在這種情況下,信號發送后將立即調用接收端的槽函數。DirectConnection
:這種連接類型表示信號發送后將立即調用接收端的槽函數。它要求發送對象和接收對象之間存在直接的連接,并且發送對象和接收對象必須是同一個線程中的對象。QueuedConnection
:這種連接類型表示信號將在發送對象的消息隊列中排隊,然后在適當的時候由事件循環處理。它要求發送對象和接收對象必須是不同的線程中的對象。BlockingQueuedConnection
:這種連接類型與QueuedConnection
類似,但是它具有阻塞的特性。也就是說,在接收端處理信號之前,發送端的線程將一直被阻塞,直到信號處理完畢為止。UniqueConnection
:這種連接類型是一個特殊的標記,用于指定只有一個連接可以同時存在。如果嘗試創建多個連接到同一個槽函數的連接,那么只有第一個連接會被保留,其余的連接將被刪除。
通過指定不同的ConnectionType
,可以在不同的場景下選擇最合適的連接方式,從而實現更靈活的信號和槽連接。