如何使用QML和C ++通过调用框架共享unicode文本?

时间:2013-11-11 14:47:15

标签: c++ qml blackberry-10 blackberry-cascades

当我尝试在BB10 Cascades框架上共享Unicode文本时,使用以下代码,所有非ASCII字符都会在调用目标处转换为问号,例如BBM会话或电子邮件:

InvokeActionItem {
    title: qsTr("Share")
    id: shareCard

    query {
      mimeType: "text/plain"
    invokeActionId: "bb.action.SHARE"
    }

onTriggered: {
  data = getData();
    }
}

function getData(){

    return "¿Cómo están las cosas en el mundo hoy?";
}

1 个答案:

答案 0 :(得分:2)

要解决此问题,请在C ++中创建一个帮助函数,将QStrings转换为Utf8,并在QML / JavaScript函数中调用它:

在你的app.h中

Q_INVOKABLE
QString Utf8EncodeString(const QString &encodeString);

在你的app.cpp

QString app::Utf8EncodeString(const QString &encodeString) {
return encodeString.toUtf8();
}

在QML中更改getData()函数:

function getData(){
    return app.Utf8EncodeString("¿Cómo están las cosas en el mundo hoy?");
}