Qt Jambi를 사용하여 Java로 작성된 일부 코드와 C++로 작성된 기존 Qt 코드를 결합하려고하는데, 어떻게해야하는지 잘 모르겠습니다. 나는 기본적으로 두 가지 acieve하기 위해 노력하고있어 : 자바에서에 Qt는 잠비 QObject를 전달 C++ Qt 오브젝트와 Qt Jambi 오브젝트를 혼합하는 방법
- 를 C++
난을 전달할 수 있습니다처럼 보이는 포인터를 직접 가져온 다음 Java 측의 QNativePointer로 래핑하지만 QNativePointer를 QT Jambi로 래핑 된 원래 객체로 다시 변환하는 방법을 알 수는 없습니다.
예 : Java에서 QWidget *을 long으로 전달한 다음 QNativePointer를 Java로 생성 할 수 있지만 어떻게 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));
:
public class Test {
public static void test (int ptr) {
QNativePointer pointer = new QNativePointer(QNativePointer.Type.Int);
pointer.setIntValue(ptr);
QWidget widget = ...
감사합니다!
실제로 Qt Jambi의 이전 버전에서는 (from dohand가 기억이 안납니다.) fromNativePointer() 또는 QJambiObject에서 비슷한 점을 발견했습니다. 최신 버전에서는 문서화되지 않은 것으로 보입니다. 다른 것들로 바쁘고 아직 그것을 테스트 할 기회가 없었습니다 ... – Dan
Jambi 위젯은 내부 위젯을 통해 네이티브 위젯에 대한 메소드 호출을 프록시하여 네이티브 위젯을 래핑합니다. 잠비에서는 모든 QObject가 QJambiObject에서 파생됩니다.이 QJambiObject도 QNAtivePointer를 포함합니다. 내가 틀렸을 수도 있지만, 그 경우처럼 보입니다. Jambi Generator는 위젯을 거의 자동으로 랩핑합니다 (수동으로 수행해야하는 작업이 일부 있음). – Dan
아, 모든 QtJambi 객체가 실제로 해당 C++ Qt 객체에 대한 링크가 있어야한다는 요점을 잊어 버렸습니다. 그래서 실제로 언급 한 방법이 효과가 있습니다. 그러나 Trolltech이 QtJambi 프로젝트를 포기하고 현재이 프로젝트를 커뮤니티 기반 프로젝트로 변환하려고 시도하고 있다는 사실을 알게되면 가까운 장래에 이러한 방법이 문서화되지 않는다면 문서화되는 것은 의심 스럽습니다. – Customizer