C ++で記述された既存のQtコードと、Qt Jambiを使用してJavaで記述されたコードを組み合わせようとしていますが、その方法がよくわかりません。私は基本的に2つのことを達成しようとしています:
- JNIを使用してC++からJavaにQObjectを渡します
- QtJambiQObjectをJavaからC++に渡します
ポインタを直接渡してJava側のQNativePointerでラップできるように見えますが、QtJambiでラップされた元のオブジェクトにQNativePointerを戻す方法がわかりません。
例:QWidget *をJavaにlongとして渡してから、JavaでQNativePointerを作成できますが、これからQWidgetを構築するにはどうすればよいですか?QJambiObjectとQObjectには「setNativePointer」メソッドがないようで、変換方法がわかりません。
C ++の場合:
QWidget* widget = ...
jclass cls = env->FindClass("Test");
jmethodID mid = env->GetStaticMethodID(cls, "test", "(I)V");
env->CallStaticVoidMethod(cls, mid, int(widget));
Javaの場合:
public class Test {
public static void test (int ptr) {
QNativePointer pointer = new QNativePointer(QNativePointer.Type.Int);
pointer.setIntValue(ptr);
QWidget widget = ...
ありがとう!