Qt QTextEdit固定宽度,高度随内容变化而变化,不会出现滚动条。

项目需求自定义控件:一个宽度固定高度根据内容自适应文本编辑框
效果如下图所示:
在这里插入图片描述
之前尝试了一些其他方法,效果并不理想,比如:根据edit的滚动条的当前位置和最大值的差值,重新设置edit的高度,达到滚动条消失,高度自适应的效果。


最终解决方案:通过根据内容重新调整edit中document的大小,设置edit的高度,不需要进行数值计算了。


核心代码:

	//之前的Edit高度
	int oldHeight = textEdit->height();

	//调整文字高度并设置
	QTextDocument *doc = textEdit->document();
	//获得调整之后的Edit高度
	int height = doc->size().height();
	int width = doc->size().width();

	//如果宽高小于最小宽高,设置为最小宽高
	textEdit->setMinimumSize(175, 26);
	QSize minSize = textEdit->minimumSize();
	if (height < minSize.height())
	{
		height = minSize.height();
	}
	if (width != minSize.width())
	{
		width = minSize.width();
	}
	doc->setTextWidth(width);

	//重新设置Edit高度
	textEdit->setFixedHeight(height);
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值