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;}

如上圖效果
