我正在考虑使用QTextEdit作为类似控制台的IO元素(用于串行数据)。 这种方法的问题在于(用户)输入和(通信)输出是混合的,它们可能不是同步的。
要检测新用户输入,可以在某些输入事件上存储和比较plainText
,例如当按下Enter / Return时。
另一种方法可能是将QTextEdit用作仅用于单独管理的输入和输出缓冲区的视图。这也可以简化潜在异步数据的问题(设备在用户输入时发送字符,在我的情况下非常不可能)。 但是,即使用单字符时间戳合并两个“流”也存在冲突的可能性。
是否有(简单)解决方案,还是应该使用单独且完全独立的输入/输出区域?
答案 0 :(得分:1)
如果您的UI是命令驱动且输入是面向行的,则单独的I / O区域是最简单的方法。
或者,远程设备可以提供回声,而没有本地回声。然后,远程设备会在有意义的时候回显字符,以保持连贯的显示。
您还可以显示本地线路编辑缓冲区,以便在远程回声延迟或不可用时提供用户反馈。该缓冲区仅用于反馈,对终端的其他行为没有影响;所有击键都会立即发送到远程设备。