[英]InvokeMethod doesn't work with SLOT(…), but works with conts char *
我有下一個課程: FoxCom
和FoxComCircle
。 在FoxCom
我有以下代碼:
...
public slots:
void bytesWrite(QByteArray bytes, qint32 requestedTimeout = -1);
...
FoxComCircle * circle;
...
void FoxCom::bytesWrite(QByteArray bytes, qint32 requestedTimeout)
{
QMetaObject::invokeMethod(circle,
//SLOT(bytesToWrite(QByteArray,qint32)),
"bytesToWrite",
Qt::QueuedConnection,
Q_ARG(QByteArray, bytes),
Q_ARG(qint32, requestedTimeout));
}
在FoxComCircle
:
...
public slots:
void bytesToWrite(QByteArray bytes, qint32 requestedTimeout);
...
void FoxComCircle::bytesToWrite(QByteArray bytes, qint32 requestedTimeout)
{
//some stinky code here
}
還有下一個行為:當我注釋"bytesToWrite",
並使用SLOT(bytesToWrite(QByteArray,qint32)),
當FoxCom::bytesWrite
時,輸出控制台中會顯示下一條消息:
QMetaObject::invokeMethod: No such method FoxComCircle::1bytesToWrite(QByteArray
,qint32)(QByteArray中,qint32)
但是,當我直接使用const char *名稱時(如上面的代碼所示),它可以工作。
難道我做錯了什么?
PS FoxCom
和FoxComCircle
在不同的線程中。
提前致謝。
根據Qt文檔中的QMetaObject::invokeMethod
描述:
在對象obj上調用成員(信號或插槽名稱 )。
因此,您必須提供插槽的名稱 ,而不是完整的簽名。 這是一致的,因為您提供了插槽的參數作為invokeMethod
函數的以下參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.