我对Qt相当陌生,我正在尝试做一些 Android 开发。我正在使用 Qt 并使用QAndroidJNIEnvironment。在代码中,我使用QMetaObject::invokeMethod
调用 QMainWindow 标头中的插槽来实现我的本机方法。问题是java文件中的native方法有一个参数是java整数数组(我相信QAndroindJniObject中的等效类型是jintArray)。我找不到相应的 c++/Qt 类型来放置在 Q_ARG(type, value) 宏中以解析参数。请帮助我理解我做错了什么,因为我认为 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);