问题:QLabel太长,显示不全,如何自动换行

问题背景及说明

项目需要在一个固定大小的label框内显示字符串,由于字符串过长,所以需要换行

本文使用Qt版本为Qt4。

网络求解

文字过长,QLabel显示不全的问题,QLabel怎么自动分行显示

总结

方法一,通过QLabel::setWordWrap(true)实现自动换行:

关键点:

QLabel中的字符串自动换行的条件:当前行写满了,而且在满行附近出现空格。

如"abc 123",假设当前行放不下,"123"将显示在第二行;又如"abc123",是不会自动换行的。

分两步:

1、设置QLable属性(二选一):

①代码实现:

1
2
3
    ui->label->setGeometry(QRect(25, 2, 75, 35));     // 设置QLabel框大小
    ui->label->setWordWrap(true);                     // true:自动换行
    ui->label->setAlignment(Qt::AlignVCenter);        // 对齐方式

②或者在Qt Designer中设置:

2、(可选)在合适位置插入空格,实现换行:

1
2
3
    QString str = "changeline";
    str.insert(6, " ");                                // 在'e'后插入空格
    ui->label->setText(str);

注:如果字符串本身带有空格,则不需要步骤2。


方法二,手动插入'\n'实现手动换行:

1
2
3
    QString str = "changeline";
    str.insert(6, "\n");                                // 在'e'后插入换行符
    ui->label->setText(str);