1 Duilib Label控件文本换行

1.1 Label控件不自动换行的问题

Duilib的Label控件在默认情况下是不支持文本换行的,比如在界面xml中有下面的Label控件定义:

<Label height="300" name="Label_Test" text="None" align="left" valign="top" font="0"/>

在C++代码中使用:

CLabelUI* temp_pLabel_Test = static_cast<CTextUI*>(m_PaintManager.FindControl(Str_Label_Test));
if (temp_pLabel_Test != nullptr)
{
    std::stringstream ss;
    for(int i=0;i<10;i++)
    {
        ss<<"a\n";
    }
    temp_pLabel_Test->SetText(ss.str().c_str());
}

设置该Label控件的文本内容,会发现换行符失效,文本并没有换行。

1.2 问题的解决

在Duilib源码中查看了Label控件的源码之后,发现其类中有一个void SetMultiLine(bool bMultiLine = true)方法用于设置控件文本是否可以多行显示,这个变量可以通过在xml中使用multiline="true"进行设置,所以如果想在界面xml文件中直接设置Label控件具有换行属性,则将上述xml语句修改为:

<Label multiline="true" height="300" name="Label_Test" text="None" align="left" valign="top" font="0"/>

如果想在C++代码中动态设置,则只需:

CLabelUI* temp_pLabel_Test = static_cast<CTextUI*>(m_PaintManager.FindControl(Str_Label_Test));
if (temp_pLabel_Test != nullptr)
{
    temp_pLabel_Test->SetMultiLine(true);
}

设置完成之后,在Label控件中需要显示的文本中加入换行符\n之后就会自动换行了。

如果您觉得对您有帮助,可以请站长喝一杯咖啡哦!

记得在赞赏备注里写上您的昵称

您可在本站资助名单中查看你的打赏记录哦!

支付宝扫一扫

微信扫一扫

金额随意,礼轻义重

当前分类随机文章推荐

全站随机文章推荐

关于本站站长 StubbornHuang
Duilib – Label控件文本换行-StubbornHuang Blog纵使晴明无雨色,入云深处亦沾衣。