问题说明
在QT开发过程中,经常使用到QPlainTextEdit来填入大量的文字,一般我们都会设置QPlainText的固定高度或者默认高度,但是随着文字的增多,就会自动出现滚动条,有时候我们可能需要QPlainText的高度随着自动适应文字的高度(即是说不需要出现滚动条)
解决办法
解决办法参考 QPlainText自适应高度的论坛,发现如果有大量空行,还是会出现滚动条,因此就在此基础上修改了一下,是否正确需要自己去验证一下,代码如下:
int getDivisionValue(int x,int y) { return static_cast<int>(ceil((static_cast<float>(x))/y)); } /** * @brief CommonUtil::countPlainTextEditFixedHeight QPlainTextEdit * @param plianTextEdit * @param nRowCount:获取的行数 * @return */ int countPlainTextEditFixedHeight(QPlainTextEdit *plainTextEdit,int &nRowCount) { int blockCount = plainTextEdit->blockCount();//有多少个块。就代表有多少个空行 //计算字体的宽度 int nSumWidth =plainTextEdit->fontMetrics().width(plainTextEdit->toPlainText()); int nUiWidth =plainTextEdit->width();// int nHeight =plainTextEdit->fontMetrics().lineSpacing();//字体每一行的高度 //字体宽度/每一行的宽度为字体占据多少行 nRowCount =getDivisionValue(nSumWidth,nUiWidth); //最终的行数为字体占据的行数+空行的行数(计算的可能不太正确,需要自己去验证) nRowCount = nRowCount + blockCount; return nHeight * nRowCount; }