QTextEdit 或 QTextBrowser 高度自适应

以下方法收集自网络

使用 QTextDocumentcontentsChanged 信号可以解决此问题。

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

private slots:    
void textAreaChanged()
{
	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);  
        	}  
	    }  
	} 
}

QTextBrowser 同上。


版权声明:本文为qiangzi4646原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。