2
Qtを使ってプロジェクトを実行していますが、invokeメソッドは別のスレッドで実行され、メインスレッドから呼び出されます。 QByteArray
をconstとして渡してビルドして実行します。 しかし、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'の署名は何ですか?あなたは 'バッファ'が呼び出し側で変更されることを期待していますか? – Mat
はい私はバッファとシグネチャがスペクトルアナライザ(qbytearrayバッファ、int頻度、intバイト、qint64データ長)を変更することを期待しています – ken
あなたの質問に正しい方法の署名を編集してください(タグの下の "編集"リンクを使用してください)。 – Mat