【问题标题】:Show and edit escaped character in QLineEdit在 QLineEdit 中显示和编辑转义字符
【发布时间】:2018-05-22 15:46:09
【问题描述】:

有没有办法以人类可读(转义)的方式在 QLineEdit 中自动显示转义字符,如回车换行符“\r\n”字符?

或者有一种简单的方法可以自动生成转义字符串。

我还需要允许用户编辑转义字符串,并且在从 QLineEdit 读回当前文本时,将其存储在 std::string 中,它必须是非转义的。

用例。 我希望用户为通信对象设置终止字符串(例如 \r\n)。将 \r\n 传递给 QLineEdit 而不进行任何手动转义,会导致 QLineEdit 输入框中出现两个不可见字符。

【问题讨论】:

  • 更好地解释自己。
  • 好吧,我写了一个更详细的解释。
  • 您想要以下内容吗? imgur.com/a/w0rkYve
  • 是的,它应该是这样的。如果我从中删除 \r 我应该在我的 std::string 中得到未转义的 Hello\n
  • 你想如何设置QLineEdit中的文字?,即用户放置它,或者使用setText()方法,同样如果在QLineEdit它显示Hello\n什么你应该得到吗?

标签: c++ qt


【解决方案1】:

"\\r\\n" ?您可以创建调用 qstring::replace 的内联存根,并使用 .toStdString

返回 std

【讨论】:

  • Mike 是的,但我想替换任何不可打印的字符,如制表符等。所以我想要一个引擎自动替换,而无需我指定所有可能的不可打印字符。
  • 我想执行此操作的引擎不一定是Qt,但我不想手动指定和手动处理所有不可打印的字符。我寻找的是一个为我进行转换的“引擎”。
  • 用 qstring::firstIndexOf ("\\" + 1) 和下一个字符创建一个字符串解析循环。或者也许可以使用正则表达式方案......
  • 正则表达式听起来很有趣
  • QregExp 有一个不错的正则表达式 API。如果您要抽象一个模式以应用于您的字符串,您可以通过一次调用或循环验证它们来验证它们,返回每次迭代失败的 int 位置。这样您就可以为每个转义序列字符使用通配符。
猜你喜欢
  • 2015-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-20
  • 1970-01-01
相关资源
最近更新 更多