Qt on Android:使用JNI与第三方jar包
QHBoxLayout *getLayout = new QHBoxLayout();
layout->addLayout(getLayout);
m_urlEdit = new QLineEdit(http://blog.csdn.net/foruok);
getLayout->addWidget(m_urlEdit, 1);
QPushButton *getButton = new QPushButton(GET);
getLayout->addWidget(getButton);
connect(getButton, SIGNAL(clicked()), this, SLOT(onGet()));
m_resultView = new QTextEdit();
m_resultView->setReadOnly(true);
layout->addWidget(m_resultView, 1);
m_stateLabel = new QLabel();
layout->addWidget(m_stateLabel);
}
Widget::~Widget()
{
}
bool Widget::event(QEvent *e)
{
if(e->type() == SimpleCustomEvent::eventType())
{
e->accept();
SimpleCustomEvent *sce = (SimpleCustomEvent*)e;
switch(sce->m_arg1)
{
case 1:
m_resultView->setText(sce->m_arg2);
m_stateLabel->setText(Success!);
break;
case 0:
m_resultView->setText(sce->m_arg2);
m_stateLabel->setText(Failed!);
break;
case -1:
m_stateLabel->setText(sce->m_arg2);
break;
}
return true;
}
return QWidget::event(e);
}
void Widget::onGet()
{
#ifdef WIN32
m_resultView->setText(Sorry, Just for Android!);
#elif defined(ANDROID)
QString url = m_urlEdit->text();
QAndroidJniObject javaAction = QAndroidJniObject::fromString(url);
QAndroidJniObject::callStaticMethod
downloadWebPage,
(Ljava/lang/String;)V,
javaAction.object
m_stateLabel->setText(Downloading...);
#endif
}
调用Java的代码在onGet()槽中,很简单,不解释了。有疑问看Qt帮助手册有关QAndroidJniObject类的说明。
OK,到此结束。
评论