QTextEdit设置固定行高、段落间距

QTextEdit设置固定行高、段落间距,qt,height,qtextedit,Qt,Height,Qtextedit,我正在做的是一个QTreeWidget,每个项目的文本都是可编辑的。 所以我将复选框QTextEdit/QPlainTextEdit分组到一个小部件中, 以及QTreeWidget的每个项目的setItemWidget。 我已经将QTextEdit的滚动条设置为始终关闭,我甚至不希望它可以通过鼠标中键滚动。因为我在其父窗口小部件上绘制点线,间距为25像素。我希望每个文本行固定在每个点行的顶部,不能滚动 所以我需要: 1>确保每个文本行的高度为25像素。每个文本行位于点行上方。 2>将QTex

我正在做的是一个QTreeWidget,每个项目的文本都是可编辑的。 所以我将复选框QTextEdit/QPlainTextEdit分组到一个小部件中, 以及QTreeWidget的每个项目的setItemWidget。 我已经将QTextEdit的滚动条设置为始终关闭,我甚至不希望它可以通过鼠标中键滚动。因为我在其父窗口小部件上绘制点线,间距为25像素。我希望每个文本行固定在每个点行的顶部,不能滚动

所以我需要:

1>确保每个文本行的高度为25像素。每个文本行位于点行上方。

2>将QTextEdit调整为25*行数高度,禁用QTextEdit的滚动功能。

当文本更改时,我将重置Qt::sizeHintRole数据以调整QTreeWidgetItem的高度。为此,我必须正确计算所需的高度

所有文本都是纯文本,但启用了wordwrap

以下是我得到的:

我的设置行高代码:(ui->textLbl是我的QTextEdit小部件,行高为25)

下面是我为项目#2设置的字符串setPlainText(): 小精炼:高级模式无效。\n哈哈,答对了!\n我喜欢多行 结果是这样的:

1>问题#1:我无法获得正确的行数,其中包括由换行功能引起的行数。

2>问题#2:似乎setLineHeight只适用于包含一个段落的文本行。 我无法控制不同段落的间距。

因此,如果手动删除QTextEdit控件中的所有换行符,然后按enter键重新生成换行符, 情况变得如此:

这就是我想要的。但是我需要文本也可以通过setText方法设置

3>问题#3:仍然可以通过鼠标中键滚动。一旦我在QTextEdit上使用鼠标中键滚动,我发现线下有额外的像素。QTextEdit是可滚动的。

有人能在这三个问题上提供帮助吗?非常感谢:)

1)尝试使用

textEdit->document()->size().height()
2) textCursor仍在文档的开头(第一个块),请使用

相反,在该循环中,获取给定QTextBlock的QTextCursor

3) 滚动条:

textEdit->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);


(或连接到信号值已更改/滑动移动并再次将值设置为零)

你真是个摇滚小子!都解决了!非常感谢!顺便说一句,解决方案,我需要在showEvent中调用它,否则返回零。这个解决方案很有魅力。3),这可以工作:连接到信号值Changed/sliderMove并再次将值设置为零。Glat可以提供帮助。//1) 必须显示QTextEdit(文本编辑->显示())并包含文本(更改QTextEdit信号textChanged()上的高度),然后才能获得文档(或小部件)的实际大小。
QTextCursor cursor(it); 
textEdit->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
textEdit->verticalScrollBar()->setMaximum(0)