qt引用java代码 qt+java

qml语言可以与java交互吗

选择了使用QML调用C++注册的单例函数这样的方法来实现调用C++代码,然后再通过QtAndroidJniObject::callMethod()来调用Java的本地方法。为了实现这样一个功能,除了在上篇文章介绍的注册QML单例之外,还必须在该函数中调用Android方法。下面是SDActivityDelegateSingleton类的实现:

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名与空间、网络空间、营销软件、网站建设、阿巴嘎网站维护、网站推广。

SDActivityDelegateSingleton.h

#ifndef ADSINGLETON_H

#define ADSINGLETON_H

#include QObject

// Android:绑定SuperDoctorActivity,负责广告API的调用

class SDActivityDelegateSingleton: public QObject

{

Q_OBJECT

public:

SDActivityDelegateSingleton( QObject* pParent = Q_NULLPTR ):

QObject( pParent )

{

}

Q_INVOKABLE void call( const QString methodName );

};

#endif // ADSINGLETON_H

SDActivityDelegateSingleton.cpp

#include "SDActivityDelegateSingleton.h"

#if defined(Q_OS_ANDROID) !defined(Q_OS_ANDROID_NO_SDK)

#include QtAndroid

void SDActivityDelegateSingleton::call( const QString methodName )

{

const QAndroidJniObject activity = QtAndroid::androidActivity( );

qDebug( "method name is: %s", qPrintable( methodName ) );

activity.callMethodvoid( qPrintable( methodName ) );

}

#else

void SDActivityDelegateSingleton::call( const QString methodName )

{

qDebug( "the desktop does not implement calling method: %s",

qPrintable( methodName ) );

}

#endif

然后在是SuperDoctorActivity.java:

// SuperDoctorActivity.java 这个Java文件重写了Android的Activity

package com.jcystudio.superdoctor;

import android.os.Bundle;

import android.util.Log;

import android.widget.LinearLayout;

import android.widget.FrameLayout;

import android.view.Gravity;

import org.qtproject.qt5.android.bindings.QtActivity;

……

public class SuperDoctorActivity extends QtActivity

{

@Override

public void onCreate( Bundle savedInstanceState )

{

super.onCreate(savedInstanceState);

……

SmartBannerManager.init(this);

}

……

public void showSmartAD( )

{

SmartBannerManager.show( this );

}

}

这样,通过QML就可以调用Java代码了,调用方法是:

……

function prepare( )

{

SDActivity.call( "showSmartAD" );// ←调用Java方法

this.focus = true;// 获得按键焦点,可以使用按键控制

Controller.clearBlocks( );

Controller.setupGame( mode, difficulty, map, actions, colors );

headerSprite.currentFrame = 2;// 小人指向平常的位置

readyMask.visible = true;

backgroundMusic.play( );

}

QT平台上可以使用java语言开发应用程序吗

qt 你是指qt语音吗?java只要安装了jdk配置好开发环境,应该都可以吧、

怎么用qt调用java?

我做过QT写界面,再嵌入C语言程序完成通信部分,因为C++编译器兼容C语言,所以可行。

extern "c"

{

/*C代码*/

}

但应该不可能嵌入

extern “java”

{

}

编译通不过的。


本文标题:qt引用java代码 qt+java
转载注明:http://ybzwz.com/article/dojshij.html