Hello everyone,

Developping an Android application, I would like to manage a click event from a Button object.
Here's the point : my source code is written in C++ (Qt) and my button in Java.
Can someone explain me how I can manage the click event between Java and Qt ?
Under the following form, compilation don't work.
Thanks!


myClass.cpp:
Qt Code:
  1. MyClass::MyClass(QWidget *parent) : QWidget(parent)
  2. {
  3. myFunction();
  4. }
  5.  
  6.  
  7. void MyClass::myFunction() {
  8.  
  9. QAndroidJniObject MyJavaClass;
  10. MyJavaClass = QAndroidJniObject("org/qtproject/example/myproject/MyJavaClass",
  11. "(Landroid/app/Activity;)V",
  12. QtAndroid::androidActivity().object<jobject>()
  13. );
  14. }
To copy to clipboard, switch view to plain text mode 

MyJavaClass.java:
Qt Code:
  1. import ...
  2.  
  3. public class MyJavaClass {
  4.  
  5. private final Activity m_MainActivity;
  6.  
  7. public MyJavaClass(final Activity MainActivity)
  8. {
  9. m_MainActivity = MainActivity;
  10.  
  11. m_MainActivity.runOnUiThread(new Runnable() {
  12. @Override
  13. public void run()
  14. {
  15. RelativeLayout m_rlMainLayout;
  16. m_rlMainLayout = new RelativeLayout(m_MainActivity);
  17. m_MainActivity.setContentView(m_rlMainLayout);
  18.  
  19. ViewGroup.MarginLayoutParams mrgBtn;
  20. ViewGroup.MarginLayoutParams mrgText;
  21.  
  22. TextView tvJavaText = new TextView(m_MainActivity);
  23. tvJavaText.setText("Hello from Ui Thread!");
  24.  
  25. Button m_btn = new Button(m_MainActivity);
  26. m_btn.setText("Hello Button");
  27. m_btn.setOnClickListener(runningBtnClick);
  28. m_rlMainLayout.addView(m_btn);
  29.  
  30. mrgBtn = (ViewGroup.MarginLayoutParams) m_btn.getLayoutParams();
  31. mrgBtn.setMargins(150, 0, 0, 0);
  32. m_btn.setLayoutParams(mrgBtn);
  33.  
  34. OnClickListener runningBtnClick = new OnClickListener() {
  35.  
  36. public void onClick(View v) {
  37. mrgText.setMargins(150, 100, 0, 0);
  38. tvText.setLayoutParams(mrgText);
  39. tvText.setText("Hy, i clicked the button!");
  40. System.out.println(m_btn.getLayoutParams().height);
  41. }
  42. };
  43. }
  44. }
  45. }
  46. }
To copy to clipboard, switch view to plain text mode