Qt / QML - 选择要在文本项中显示的字符数

时间:2016-02-08 22:10:33

标签: qt qml

我想只在文本项中显示单词的两个第一个字符。 例如,我有一个单词列表(法语,英语,意大利语),我只想显示(FR,EN,IT)。

如果我忽略了文字,我最后会得到三个点(...),我不希望这样。

有什么想法吗?

提前致谢

2 个答案:

答案 0 :(得分:1)

您可以将clip设置为true,但之后您需要使用width

所以我认为最好的选择是在JavaScript中实现一个小函数,只获得前两个字母。

示例:

<强> main.qml

import QtQuick 2.5
import QtQuick.Window 2.2
import "myscript.js" as MyFunctions

Window {
    visible: true

    // You need to play with the width
    Text {
        width: 13
        text: "FRENCH"
        clip: true
    }

    // OK. width is not necessary
    Text {
        y: 60
        text: MyFunctions.substring("FRENCH")
    }

    // We don't want this behaviour
    Text {
        y: 30
        width: 25
        text: "FRENCH"
        elide: Text.ElideRight
    }
}

<强> myscript.js

function substring(str) {
    return str.substring(0, 2);
}

答案 1 :(得分:0)

请记住,国家/地区名称中的第一个字母以及相应的ISO标准2或3个字母的国家/地区代码是不同的。例如,安道尔的双字母代码是AD。 (https://en.wikipedia.org/wiki/ISO_3166-2) - 因此,如果您尝试实现国家ISO标准国家/地区编码,则应根据需要简单地创建具有属性名称,isoCode2等的对象列表,例如:

  

property var myArrayOfCountries:[

{ "name" : "Andorra", "isoCode2" : "AD" },
{ "name" : "United Arab Emirates", "isoCode2" : "AE" },
... 
     

我可能会尝试从某些Web服务中获取这些内容(如果可用),因为创建和维护此类列表可能会很麻烦。

...那就是说,如果你只是需要从QML Javascript中的字符串中获取前两个字母,我只需要使用

  

text:myString.substring(0,2)

或者在你的情况下,我认为:

  

text:myArrayOfStrings [someIndex] .substring(0,2)

Ps。,您将使用对象列表方法:

  

text:myArrayOfCountries [someIndex] [&#34; isoCode2&#34;]

当然。