首页| 论坛| 消息

标题:QPlainTextEdit 怎么自适应高度
作者:shixingya
日期:2018-01-23 15:03
内容:

QPlainTextEdit 怎么自适应文字高度


#1 [shixingya 01-23 16:00]
void MainWindow::on_plainTextEdit_textChanged()
{
QRect fontBoundingRect =
QFontMetrics(ui->plainTextEdit->font()).boundingRect
(ui->plainTextEdit->toPlainText());
ui->plainTextEdit->setFixedHeight(fontBoundingRect.height());
}
不可以
#2 [shixingya 01-23 16:01]
QTextDocument *document=textEdit->document();
document->adjustSize();
if(document){
if (textEdit){
int newheight = document->size().rheight()+10;
if (newheight != textEdit->height()){
textEdit->setFixedHeight(newheight);
}
}
}
#3 [shixingya 01-23 17:01]
亲测 以上两个方法 都不可以 , 有没有正确的方式呀
#4 [shixingya 01-23 19:19]
int getDivisionValue(int x,int y)
{
return ceil(((float)x)/y);
}
void MainWindow::on_textEdit_textChanged()
{
int SumWidth =ui->textEdit->fontMetrics().width(ui->textEdit->toPlainText());
int uiWidth =ui->textEdit->width();
int height =ui->textEdit->fontMetrics().lineSpacing();
int RowCount =getDivisionValue( SumWidth,uiWidth);
if(RowCount==0)
RowCount=1;
ui->textEdit->setFixedHeight(height *RowCount);
}

已经解决,汉字换行也没问题
#5 [cluckly 01-23 21:16]
stackoverflow上有人这么做:
connect(ui->textEdit->document(), SIGNAL(contentsChanged()), this, SLOT(update_height()));
ui->textEdit->setFixedHeight(ui->textEdit->document()->size().height() + 5);
链接:
https://stackoverflow.com/questions/19350711/qt-text-edit-text-browser-dynamic-height

回复 发表
主题 版块