1. 程式人生 > >QLabel自動換行(支援中英文)

QLabel自動換行(支援中英文)

QLabel支援提供了API,只有中文換行,因為中文裡面含有空格換行符號,如下
LabelName->setWordWrap(true);
LabelName->setAlignment(Qt::AlignTop);

如果你輸入了英文裡面提供了換行符號或者空格,英文也可以支援換行

QString str = "fdsfa";
str= str+"\n" +"fdddddddddddddd23";
ui->label->setText(str);

顯示的結果是這樣:

fdsfa

fdddddddddddddd23

如果我們換位思考一下,label顯示的內容QString,在此之前,我們只要對字串進行處理就行了,下面我嘗試一種方法然大家參考
void setText(const QString &)

QString event::AutoFeed(QString text)
{
     QString strText = text;
     int AntoIndex = 1;
     if(!strText.isEmpty())
     {

         for(int i = 1;i<strText.size() + 1;i++)//25個字元換一行
         {
             if(i == 25*AntoIndex + AntoIndex -1)
             {
                 strText.insert(i,"\n");
                 AntoIndex ++;
             }

         }
     }
     return strText;
}
int main()
{
   ui->label->setText(AutoFeed(text));
}

在寫的過程中,我們不要返回Qstring& 因為區域性變數生命週期結束後,你還佔用著地址,非法佔用,會造成程式crash