(超简单)完美解决QTextEdit以及QTextbrowser高度自适应

又得用到这个了,突然发现我好沙雕,为什么不用滚动条来确定,emmmmm,突然就变简单了

int height=textBrowser->verticalScrollBar()->maximum()-textBrowser->verticalScrollBar()->minimum()+textBrowser->verticalScrollBar()->pageStep();
textBrowser->setFixedHeight(height);
//可以使用信号与槽 见文章末尾

在这里插入图片描述
好了



下面是原来弄的,也可以

找了半天,终于解决了QTextbrowser高度自适应问题,一段代码,我需要的仅是以下代码,仅参考,若要使用,请使用文章后面的代码,利用信号与槽,完美解决。

	//实践证明我觉得下面这句不要
	ui->textBrowser->document()->adjustSize();//将文档调整到合理的大小。
    int newheight = ui->textBrowser->document()->size().rheight();
   	if (newheight != ui->textBrowser->height())
    {
        ui->textBrowser->setFixedHeight(newheight);
    }

原博客地址:https://blog.csdn.net/qiangzi4646/article/details/100524886


QTextBrowser*textBrowser= new QTextBrowser(this);
...
connect(textBrowser->document(),SIGNAL(contentsChanged()),this,SLOT(textAreaChanged()));
...

private slots:    
void textAreaChanged()
{
	int height=textBrowser->verticalScrollBar()->maximum()-textBrowser->verticalScrollBar()->minimum()+textBrowser->verticalScrollBar()->pageStep();
	textBrowser->setFixedHeight(height);
	/*之前的
	QTextDocument *document=qobject_cast<QTextDocument*>(sender());  
	document->adjustSize();  
	if(document)
	{  
    	QTextEdit *editor=qobject_cast<QTextEdit*>(document->parent()->parent());  
    	if (editor)
    	{  
        	int newheight = document->size().rheight()+10; 
        	if (newheight != editor->height())
        	{  
            	editor->setFixedHeight(newheight);  
        	}  
	    }  
	} */
}
  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QTextEditQt框架中的一个文本编辑器控件,它可以用于显示和编辑文本内容。要实现QTextEdit自适应高度,可以通过以下步骤进行操作: 1. 设置QTextEdit的文本内容自动换行:可以使用`setWordWrapMode`函数将文本内容设置为自动换行模式,这样当文本内容QTextEdit的宽度时,会自动换行显示。 2. 监听QTextEdit的文本内容变化:可以使用`textChanged`信号来监听QTextEdit的文本内容变化。当文本内容发生变化时,可以根据文本内容的长度来调整QTextEdit高度。 3. 调整QTextEdit高度:可以使用`setFixedHeight`函数来设置QTextEdit的固定高度,根据文本内容的行数和每行的高度来计算出合适的高度值,并将其设置为QTextEdit高度。 下面是一个示例代码,演示了如何实现QTextEdit自适应高度: ```cpp // 设置QTextEdit自适应高度 void setAdaptiveHeight(QTextEdit* textEdit) { // 设置文本内容自动换行 textEdit->setWordWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere); // 监听文本内容变化 QObject::connect(textEdit, &QTextEdit::textChanged, [=]() { // 获取文本内容 QString text = textEdit->toPlainText(); // 获取每行的高度 int lineHeight = textEdit->fontMetrics().lineSpacing(); // 计算文本内容的行数 int lineCount = text.count('\n') + 1; // 计算合适的高度值 int height = lineCount * lineHeight; // 设置QTextEdit高度 textEdit->setFixedHeight(height); }); } ``` 使用上述代码,可以将`setAdaptiveHeight`函数应用到需要自适应高度QTextEdit控件上,当文本内容发生变化时,QTextEdit高度会自动调整以适应文本内容的显示。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值