查看完整版本: [-- QPlainTextEdit 怎么自适应高度 --]

QTCN开发网 -> Qt基础编程 -> QPlainTextEdit 怎么自适应高度 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

shixingya 2018-01-23 15:03

QPlainTextEdit 怎么自适应高度

QPlainTextEdit 怎么自适应文字高度

shixingya 2018-01-23 16:00

void MainWindow::on_plainTextEdit_textChanged()
{
    QRect fontBoundingRect =
              QFontMetrics(ui->plainTextEdit->font()).boundingRect
              (ui->plainTextEdit->toPlainText());
      ui->plainTextEdit->setFixedHeight(fontBoundingRect.height());
}

不可以

shixingya 2018-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);
                }
            }
        }

shixingya 2018-01-23 17:01
亲测 以上两个方法 都不可以 , 有没有正确的方式呀

shixingya 2018-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);

}


已经解决,汉字换行也没问题

cluckly 2018-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


查看完整版本: [-- QPlainTextEdit 怎么自适应高度 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled