2
我正在做一個Qt項目,其中invoke方法在單獨的線程上運行並從主線程調用。 如果我傳遞一個QByteArray
作爲常量,它會生成並運行。 但是,如果我刪除了它建立的const,但在我嘗試運行它時終止, 並拋出一個斷言Q_ASSERT(b)
。QMetaObject :: invokeMethod不採用非const參數
爲什麼它終止?
我必須在QByteArray
附加一些數據。
const bool b = QMetaObject::invokeMethod(m_thread, "calculateSpectrum",
Qt::AutoConnection,
Q_ARG(QByteArray, buffer),
Q_ARG(int, format.frequency()),
Q_ARG(int, bytesPerSample),
Q_ARG(qint64, dataLength));
Q_ASSERT(b);
Q_UNUSED(b) // suppress warnings in release builds
'calculateSpectrum'的簽名是什麼?你是否期待在調用者中修改'buffer'? – Mat 2012-02-18 07:48:15
是的,我希望更改緩衝區和簽名是spectrumanalyser(qbytearray緩衝區,int頻率,int字節,qint64數據長度) – ken 2012-02-18 07:58:30
請編輯正確的方法的簽名到您的問題(使用標籤下的「編輯」鏈接)。 – Mat 2012-02-18 08:15:30