私はQtにかなり慣れていないので、Android 開発をしようとしています。私は Qt で作業しており、QAndroidJNIEnvironmentを使用しています。コードでQMetaObject::invokeMethod
は、QMainWindow ヘッダーでスロットを呼び出すために使用するネイティブ メソッドを実装しています。問題は、Java ファイルのネイティブ メソッドに Java 整数配列 (QAndroindJniObject が jintArray であると私が信じている同等の型) であるパラメーターがあることです。引数を解決するために Q_ARG(type, value ) マクロに配置する対応する c++/Qt 型が見つかりません。jintArray に相当する型は int [] だと思っていたのですが、それを使用するとエラーが発生します。助けてくれてありがとう。
onReceiveNativeMounted (JNIEnv * env, jobject obj,jint array_index,jintArray version)
{
QMetaObject::invokeMethod(&MainWindow::instance(), "onReceiveMounted"
, Qt::QueuedConnection, Q_ARG(int, array_index),Q_ARG(int[], version));
return array_index;
}
私が受け取るエラーは以下の通りです:
error: no matching function for call to
'QArgument<int []>::QArgument(const char [6], _jarray*&)'
#define Q_ARG(type, data) QArgument<type >(#type, data)
^
リクエストに応じて、Java 関数の署名を以下に示します。
public static native int onReceiveNativeMounted(int array_index, int[] version);