Label - BB10原生应用程序允许的最大Qstring长度

时间:2013-08-04 21:35:43

标签: c++ qt label blackberry-10 maxlength

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

我们走了:))

我在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()超过某个限制时,某些东西会修剪掉字符串的结尾部分。

从调试中我可以看到text.length在其中一个案例中是~55000。 我还验证了Label能够显示最多3000个字符的文字。 我也可以毫无疑问地说这与ScrollView或Container无关。

No Label,ScrollView或Container文档定义了除它可能取决于设备之外的任何限制。

我也尝试使用TextArea但没有太多帮助,它最多可达到4000个字符。

所以,最后, 是否存在Label或TextArea的已知字符限制 ,或者如果它是设备相关的东西,那么我该如何克服这个问题呢?请帮忙。

2 个答案:

答案 0 :(得分:0)

我使用此代码获得了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

答案 1 :(得分:0)

可以在文档(TextArea maximum length)中找到TextArea小部件的限制:

  

默认maximumLength是INT_MAX,表示没有设置限制。   虽然没有限制设定,但实际限制是一个很大的限制   价值取决于设备。

虽然,对于特定的Label小部件没有这样的属性,我想它与从AbstractTextControl继承的所有类都使用QString来保持文本显示的值和用于返回length of QString is int

的类型