如何在QTextEdit中设置文本块的可见性?

如何在QTextEdit中设置文本块的可见性?,qt,pyqt,Qt,Pyqt,我试图在QTextEdit中隐藏textblock,但不起作用: block = textedit.document().begin() block.setVisible(False) 此代码适用于QPlainTextEdit,但不适用于QTextEdit。在文档中,我没有发现任何关于它如何适用于QTextEdit的内容,如下所示: void QTextBlock::setVisible(布尔可见) 设置块的可见性 可见 该函数是在Qt中引入的 4.4 另请参见isVisible() 如何在Q

我试图在QTextEdit中隐藏textblock,但不起作用:

block = textedit.document().begin()
block.setVisible(False)
此代码适用于QPlainTextEdit,但不适用于QTextEdit。在文档中,我没有发现任何关于它如何适用于QTextEdit的内容,如下所示:

void QTextBlock::setVisible(布尔可见) 设置块的可见性 可见

该函数是在Qt中引入的 4.4

另请参见isVisible()

如何在QTextEdit中隐藏块


提前谢谢你

我已经证实了你描述的行为。此外,我已经确认,在您给出的代码中,遵循setVisible方法,块的可见性确实是错误的

因此,我看到的最清楚的解释是:QPlainTextEdit不是从QTextEdit继承的。它们都继承自QScrollableArea,我只能假设QTextEdit不考虑其文档块的可见性。QPlainTextEdit使用的文档使用QPlainTextLayout对象,而QTextEdit还有一些我无法确定的内容

所以。。。我不确定这能不能按你的意愿来做。另一种方法是在文本进入QTextEdit之前对其进行过滤,Python非常适合该任务

self.paragraphs = ["First paragraph","Second Paragraph","Third Paragraph",]
self.display_text = '\n'.join(self.paragraphs[1:])
self.textedit.setText(self.display_text)

FWIW,九年过去了,现在看来这是可行的(Qt5.13.1)。下面的示例来自,但使用C++:

QTextCursor cursor(&mDocument);
cursor.insertText("Hello world! ");
cursor.insertBlock();
cursor.insertText("Goodbye world! ");
cursor.block().setVisible(false);
当我显示文档时,我看到:

Hello world!