添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

QTextEdit

我们在用QTextEdit文本框时,总会遇到这样的问题,随着文字的增多,想让文本框也跟着变动,但是只让他的高度变动,而宽度不变。
其实在QTextDocument中存在一个函数 void QTextDocument::adjustSize(),他可以跟随文本字数的变动从而调整大小,但是,这会导致,宽度也会变化,基于此,我们只需重新设置高度即可。

CMyTextEdit.cpp(主要函数) CMyTextEdit继承于QTextEdit

//注意该函数为槽函数
void CMyTextEdit::slotContentAdjust()
	QTextDocument *document = qobject_cast<QTextDocument *>(sender());//拿到信号发送的对象
	if(document)
		QTextEdit *edit = qobject_cast<QTextEdit*>(document->parent()->parent());
		if(edit)
			//计算总面积
			int Area = document->size().width() * document->size().height();
			//新的高度
			int NewHeight = Area / this->width();
			NewHeight = NewHeight < document->size().height() ? document->size()->height() + 5 : NewHeight + 5;
			edit->setFixedHeight(NewHeight);

Widget.cpp

CMyTextEdit *m_text = new CMyTextEdit(this);
m_text->setFixedSize(300,100);
m_text->show();
connect(m_text->document(),&QTextDocument::contentsChanged,this,CMyTextEdit::slotContentAdjust);
 

参考:https://blog.csdn.net/plilop/article/details/114229110

可以使用setFont()函数设置字体,使用setTextColor()函数设置文本颜色,使用setTextBackgroundColor()函数设置文本背景色,或者使用insertHtml()函数插入HTML标签。要设置QTextEdit的文本内容,可以使用setText()函数或insertPlainText()函数。可以使用cut()函数实现剪切操作,使用copy()函数实现复制操作,使用paste()函数实现粘贴操作。要获取QTextEdit的文本内容,可以使用toPlainText()函数。 QTextDocument *document = _uiLabel->NoteEdit->document(); _uiLabel->NoteEdit->setFixedHeight(document->size().height() + 20); 找了半天,终于解决了QTextbrowser高度自适应问题,一段代码,我需要的仅是以下代码,仅参考,若要使用,请使用文章后面的代码,利用信号与槽,完美解决。 ui->textBrowser->document()->adjustSize();//将文档调整到合理的大小。 int newheight = ui->textBrowser->document()-... 在很多时候,我们需要Qt TextEdit控件的大小可以根据字体的大小进行自动调整。为了达到该目的,往往使用adjustSize进行调整。但是存在当宽度固定时,想高度自动变大,该函数就无法满足了。该函数主要是自动生成自适应的宽度和高度,该宽度和高度是随机的。因此我们可以换一个角度来实现,虽然高度和宽度是随机,但是总的面积是不变的,该面积是可以包含所有内容。以下是实现代码,是根据网上提供的代码进行修改的。 #include "widget.h" #include "ui_widget.h" Widget Qt初学者,想要用label控件实现一个用于显示文字信息的文本框,要求文字自动换行、label高度随内容调整、上下可滚动。 为了实现滚动,使用ScrollArea控件,将要显示文字的label放到这个ScrollArea里,然后设置ScrollArea的布局(水平或竖直都可,根据自己需要),这样的话label就能占满整个ScrollArea了。 实现自动换行,可以在ui designer设置: 或者代码设置: ui->label0->setWordWrap(true); 实现高度随内容调整: 在 qss 中 -1px 表示由系统决定部件大小(如height、width)。 QLineEdit { min-width: 120px; max-width: 120px; QTableWidget QLineEdit { min-width: -1px; max-width: -1px; 之前用Qt做了个截图工具,最值得一写的就是在图片中添加文字时,如何让QTextEdit自适应文本的宽高 值得参考的是这篇博客:https://blog.csdn.net/kaida1234/article/details/80094175 但也只是做到了宽度自适应,高度并没有这里的核心函数是void QTextDocument::adjustSize(),它他可以跟随文本的变动调整大小,然后通QSizeF QTextDocument::size()可以获取准确的文本尺寸,接着根据此尺寸调整编辑框的宽高,从而 取消内容选中 我想设置QTextEdit在focusOut时取消之前被选中的内容。QTextEdit拥有cursor position和anchor position两个position(加前缀用于区分),在没有内容选中时,两者的位置是一样的;反之当有内容选中时,两者分别位于选中内容的两端。QTextEdit没有提供设置anchor的函数,所以通过移动cursor position使两者重新到达同一位置即可。然而经过以下几种办法,皆没有反应,记录在此,以后找原因。 int nPos = ui->tex 我们知道,通过Qt的各种Layout可以实现控件的自动布局。 但是在使用Qt Designer创建的UI时,发现UI始终是设计时的样子,无法随着容器的放大缩小自适应地变化。 通过之前对ui的.h文件进行分析,我们知道Qt在生成ui代码时,根据最外层的Layout自动添加一个了Widget: /** 这个Widget在UI设计时是没有的,是Qt为了方便组合其他的组件而且自动创