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

Qt/QML-选择文本项中要显示的字符数,qt,qml,Qt,Qml,我只想在文本项中显示单词的前两个字符。 例如,我有一个单词列表(法语、英语、意大利语),我只想显示(FR、EN、IT) 如果我省略了文本,我总是会在结尾处得到三个点(…),我不希望这样 有什么想法吗 提前感谢您可以将剪辑设置为真,但是您需要使用宽度 所以我认为最好的选择是在JavaScript中实现一个小函数,只获取前两个字母 例如: main.qml import QtQuick 2.5 import QtQuick.Window 2.2 import "myscript.js" as MyF

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

如果我省略了文本,我总是会在结尾处得到三个点(…),我不希望这样

有什么想法吗


提前感谢

您可以将
剪辑
设置为
,但是您需要使用
宽度

所以我认为最好的选择是在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);
}

请记住,国家名称中的首字母和相应的ISO标准2或3字母国家代码是不同的。例如,安道尔的两个字母代码为AD.()--因此,如果您试图实现国家ISO标准国家编码,您只需根据需要列出具有属性名称、isoCode2等的对象列表,例如:

属性变量myArrayOfCountries:[

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

如果可以的话,我可能会尝试从一些web服务获取这些信息,因为创建和维护这样的列表可能会很痛苦

…也就是说,如果您只需要从QML Javascript中的字符串中获取前两个字母,我只需要

文本:myString.substring(0,2)

或者在你的情况下,我想:

文本:MyArrayOfString[someIndex]。子字符串(0,2)


请注意,对于对象列表方法,您将使用:

文本:myArrayOfCountries[someIndex][“isoCode2”]


当然。

您不想在文本元素(法语、英语、意大利语)中显示三个单词的前两个字符,只想在文本元素中显示三个不同的单词(FR、EN、IT)。好吧,让他们看看。这听起来像是XYY问题。不幸的是,我的C++方法返回了完整的单词列表,我只想知道我是否只能显示两个字符。听起来像一个想法,我会给出一个试探,我不知道这个子串函数,它像魅力一样工作。谢谢!谢谢你!快乐编码!:)