QTextEdit是富文本编辑框,在使用中具有自动换行的功能。当然你也可以使用QLabel+'\n'换行也具有相同的效果。但是你需要根据QFontMetrics类来计算当前字符串的长度。

 例如:

  QFont font("times", 24);

  QFontMetrics fm(font);
  int pixelsWide = fm.width("What's the width of this text?");
  int pixelsHigh = fm.height();
计算当前文本的宽度用于来换行,这种计算的方式还是不是很精准,会致使文字换行长短不一。
当然也有简单的方式实现文本的换行,让看起开就像label标签的形式一样,那就是用qtextedit,让它自动换行,但是也是有问题的就是当视口的大小小于文本显示的内容高度的时候就会出滚动条,
,这样很影响美观,就比如我在一个qtablewidget的某个单元格内需要一个能够支持换行功能的节点,我们都知道,qtablewidgeitem是不支持换行功能的,即使+‘\n’也是不支持的,因此我们在
qtablewidget中调用setcellwidget就可以把我们能够支持换行的界面放进去了,这时我们可以放入qtextedit,为了不使qtextedit出现滚动条,我们可以是指定行高为qtextedit的高度+
qtextedit的maximumHeight高度值,并且使qtextedit的滚动条隐藏,这样就可以使qtablewidget的节点为支持换行的节点。
example:
  QTextEdit *pEdit = new QTextEdit();
  pEdit->verticalScrollBar()->hide();
  pText->setReadOnly(true);
  pEdit->setText(str);
  QTableWidget *pTableWgt = new QTableWidget(this);
  pTableWgt->setColumnCount(1);
  pTableWgt->insertRow(0);
  pTableWgt->setCellWidget(0, 0, pEdit);
  pTableWgt->setRowHeight(pEdit->height() + pEdit->verticalScrollBar()+maximum());
记得是指样式表:
  QTextEdit{border:none;}

如上图效果