之前用Qt做了个截图工具,最值得一写的就是在图片中添加文字时,如何让QTextEdit自适应文本的宽高
值得参考的是这篇博客:https://blog.csdn.net/kaida1234/article/details/80094175
但也只是做到了宽度自适应,高度并没有
一.效果
二.原理
这里的核心函数是void QTextDocument::adjustSize(),它他可以跟随文本的变动调整大小,然后通QSizeF QTextDocument::size()可以获取准确的文本尺寸,接着根据此尺寸调整编辑框的宽高,从而实现自适应。但是,当编辑框中的文本有自动换行时,经adjustSize()调整后文本的宽度和高度是随机的,只是总面积不变,正因如此,在具体实现的时候还得加上其他的判断才行。
QTextEdit的setLineWrapMode方法就是一个不错的辅助,当不需要自动换行时(宽度自适应),可将其参数设QTextEdit::NoWrap;当编辑框的宽度达到最大值时,可将其参数设为QTextEdit::WidgetWidth,这样文本就会自动换行(高度自适应),当然此时需将编辑框的宽度