1

我需要用不可编辑的字块制作一个 QLineEdit。

例如,假设我在 QLineEdit 中删除了一个单词(实际上表示一个)。我想在 QLineEdit 上正常书写,但是如果我尝试将光标移动到一个单词内,它会移动到它上面,即将光标放在单词的结尾/开头。

另外,我希望这个词总是在它上面显示一个特定的亮点,用不同的颜色(模拟一个可以包装它的盒子)。

关于如何做到这一点的任何想法?QTextArea 会更好吗?我在考虑 QLineEdit 因为它实际上会在 QTableWidget 单元格内,所以我认为它可能或多或少具有相同的功能,我错了吗?

更新我发现这两个函数实际上可能对 QLineEdit:cursorWordBackward()和有帮助cursorWordForward(),所以这可能有助于移动单词。有人有这方面的例子吗?

更新 2由于 QLineEdit 不支持富文本,我需要的“突出显示”功能只能通过 QTextEdit 来实现。这还有其他问题:QTextEdit 没有我在上面第一次更新中提到的功能,我不知道是否可以将 QTextEdit 放在 QTableWidget 单元格中。

4

2 回答 2

1

QLineEdit 只能包含纯文本,当然不能这样做。我在想QTextEdit,它可以显示HTML。但是查看文档,我意识到无法在 QTextDocument (由 QTextEdit 使用)中插入不可编辑的块。我认为没有简单的解决方案。

您可以尝试手动实现它。如果用户将光标移动到不可编辑的块或更改其内容,则捕获textChanged()cursorPositionChanged()发出信号QTextEdit,分析其内容和光标位置并修改它们。

于 2013-06-27T13:32:52.073 回答
-1

也许你可以通过使用inputMask来实现这一点......

于 2013-06-27T13:10:35.337 回答