C++ QTextDocument::contentChange() 信号提供无效的输入数据
C++ QTextDocument::contentsChange() signal provides invalid input data
我目前正在为我的大学班级开发一个简单的oline纯文本编辑器。我使用QTextDocument::contentsChange(index, charsRemoved, charsAdded)
信号来确定QPlainTextEdit
对文档所做的更改,并将它们发送到服务器。 但有时参数、charsRemoved
和charsAdded
给出无效值。
例如,当我在编辑器文本中间插入带有 Ctrl+V 的文本时,会报告正确的字符添加信息(charsRemoved == 0 && charsAdded == <inserted_text_length>
(。但是,如果我在第零个索引中插入文本,就在第一个字符之前,则会给出无效数据(charsRemoved == <previous_editors_text_size> + 1 && charsAdded == <new_editors_text_size> + 1
(。但是,如果我通过键盘键入单个字符,并且光标位于编辑器的开头,则信号会正确报告报告charsRemoved == 0 && charsAdded == 1
此外,当我通过按 Ctrl+Shift 更改文本输入语言时,或者当我使用 Alt+Tab 时光标放置在窗口中的任何位置QPlainTextEdit
时, 然后发出两次信号QTextDocument::contentsChange()
,并报告charsRemoved == <current_editors_text_size> + 1 &&
charsAdded == <previous_editors_text_size>
这是一个错误还是其他我如何处理这个问题?
看起来这个错误从qt 4开始就被报告了,但从未得到修复。 我能找到的最新错误报告是这个。
对于双重信号发射,请考虑此信号应用于报告文本内容和格式的变化。因此,也许这些键组合会触发两个信号,一个用于文本,一个用于输入模式的更改。但这只是我的假设。
- 如何接受 [ENTER] 键作为无效输入并发送错误消息
- 如何定义此"if block"中其他无效输入的值,以便在c ++中将字符串转换为对象?
- 处理输入流运算符>>中的无效输入
- C++循环:如何让程序在用户输入无效输入时多次重复"error"消息
- C++,程序输出无效输入,但继续通过循环
- 无效输入导致程序崩溃.有没有办法忽略它
- 无效输入不断弹出
- GetFileAttributes返回无效输入的File_attribute_directory
- 捕获无效输入的最常见/愚蠢方式
- C++ 如何防止无效输入?
- 无效输入后卡在循环中
- 如何在显示游戏菜单时处理无效输入
- 在 cin 失败时捕获无效输入
- 如何在 c++ 中捕获无效输入
- 无效输入会导致多语言 JSON 消息传递系统中的身份验证绕过
- 无法正确验证无效输入并接受带有C++的正确范围值
- 如何在不陷入无效输入的情况下重复此操作
- 运算符重载以显示无效输入的错误
- Std::cin有时挂起,有时在无效输入后永远重复
- 使用cin.fail()防止无效输入