QT中 QPlainTextEdit自适应高度的问题(防止出现滚动条)

问题说明

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

PS:如果大家有什么更好的办法,欢迎留言评论

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值