Label-BB10本机应用程序中允许的最大Qstring长度

max Qstring length allowed in Label - BB10 native apps

本文关键字:Qstring 长度 本机 应用程序 Label-BB10      更新时间:2023-10-16

感谢您的关注以及您能提供的任何建议/帮助:

我们开始:)

我在QML中有以下布局:

Page {
    ScrollView {
        scrollViewProperties {
            scrollMode: ScrollMode.Vertical
        }
        Container {
            verticalAlignment: VerticalAlignment.Center
            horizontalAlignment: HorizontalAlignment.Center
            Label {
                id: label1
                objectName: qsTr("label1")
                textStyle.base: SystemDefaults.TextStyles.BigText
                verticalAlignment: VerticalAlignment.Center
                horizontalAlignment: HorizontalAlignment.Center
                multiline: true
                textStyle.textAlign: TextAlign.Center
            }
        }
    }
}

在我的c++代码中,我为这个标签设置了一个巨大的UTF-8 QString:

/*
 * getData() - a helper function to take care of pulling everything from 
 * db and then packing it all and returning to caller
 */ 
QString text = getData();                                                        
label1->setText(text);

在大多数情况下,一切都很好。但在某些情况下,当text.length()超过某个限制时,会有一些东西修剪掉字符串的尾部。

通过调试,我可以看到其中一种情况下的文本长度约为55000。此外,我还验证了Label能够显示多达3000个字符的文本。此外,我可以毫无疑问地说,这与ScrollView或Container无关。

没有标签、滚动视图或容器文档定义任何类型的限制,除非它说它可能依赖于设备

我也尝试过使用TextArea,但在没有太多帮助的情况下,它增加了大约4000个字符。

最后,标签或文本区域是否有已知的字符限制,或者如果它是一个依赖于设备的东西,那么我如何克服这个问题?请帮忙。

TextArea小部件的已知限制可以在文档中找到(TextArea最大长度):

默认的最大长度为INT_MAX,这意味着没有设置限制。虽然没有限制集,但实际的限制是一个大的有限值,并且取决于设备。

尽管Label小部件没有这样的属性,但我想它的值与从AbstractTextControl继承的所有类的值相同,这些类使用QString来保存要显示的文本,并且用于返回QString长度的类型是int

我用这个代码得到了35716的限制:

           Label {
                    onCreationCompleted: {
                        var texte = "0 ";
                        var count = 0;
                        for (var i = 0; i < 12000; i ++) {
                            count += count.toString().length + 1;
                            texte = texte + " " + count;
                        }
                        text = texte;
                    }
                    multiline: true
                    text: ""
                }

我们应该将此添加到BlackBerry bugTracker的票证中:https://www.blackberry.com/jira/secure/Dashboard.jspa