【发布时间】:2014-03-15 18:43:55
【问题描述】:
我一直在寻找QsciScintilla API,我想知道如何在文本编辑器中将一行设置为只读。我知道它提供了一个 setReadOnly 函数。但这会将整个文本编辑器设置为只读。
关于如何将一行设置为只读的任何建议?
我正在使用 PQT4 Python 3x
【问题讨论】:
-
我相信 QsciScintilla 为您提供了拦截用户操作的选项,不是吗?您也许可以使用它来否决用户的编辑:因此,如果用户按下 delete、bs 或某个键,您的函数会检查它是否在该行上是只读的,如果是,那么您的代码会拒绝用户操作事件。
-
@Schollii。但是,如果用户删除或覆盖了一大块恰好包含“只读”行的文本怎么办?你将如何防止这种情况发生?
-
@ekhumoro 相同的策略:拦截删除选择,查看是否有任何选定的行是只读行之一,如果是,则拒绝。请注意,Pro-grammer 可能还有其他未提及的要求,例如使用 ok/cancel 显示警告等。
-
@Schollii。如果您在只读行上方删除或插入行,会发生什么?我认为仅跟踪用户行为是不够的。只读行需要附加一个标记(有一个现有的 API 可以做到这一点),以便可以跟踪它们的位置。但即使这样做了,还有许多其他内置的 Scintilla 功能需要禁用(或解决)以避免无意中破坏。使用 QTextEdit 比使用 QScintilla 更容易实现您的策略很多。