如何在我的 Qt 应用程序中清理一系列字符的每个输入
How to sanitize every input for a range of character in my Qt application
我有一个 Qt 应用程序,它有一堆 QLineEdit、QTextEdit 等,用户可以修改并放置他喜欢的任何文本。
在此应用程序中保存时,会写入一个 XML 文件,部分来自用户在这些字段中输入的内容。然后通过saxonb-xslt将XML文件转化为HTML.
问题是目前用户可以在这些字段中输入一系列非法 HTML 字符(1 字节从 128 到 156),因此 XML 不会被转换saxonb(由于非法 HTML 个字符而拒绝它)。
我想象的解决方案是创建自己的重载 QIODevice class,并修改 writeData 方法将数据转换回 QString,迭代 QChar 并删除 128 到 156 之间 1 个字节上的每个 QChar .
现在这在理论上应该可行,但我的问题是:我不可能是第一个遇到这个问题的人,所以有没有一种方法可以通过 Qt 轻松解决 class/method例如?我找了一个已经做好的解决方案,但没有找到。
我认为处理此问题的最佳方法是在输入字段中进行输入验证。 Qt 对此有支持,请参阅 QValidator class 的文档和这些 SO 问题:
Qt QLineEdit Input Validation
和(因为 QTextEdit 不支持开箱即用的验证器):
QRegExpValidator with QTextEdit
我有一个 Qt 应用程序,它有一堆 QLineEdit、QTextEdit 等,用户可以修改并放置他喜欢的任何文本。
在此应用程序中保存时,会写入一个 XML 文件,部分来自用户在这些字段中输入的内容。然后通过saxonb-xslt将XML文件转化为HTML.
问题是目前用户可以在这些字段中输入一系列非法 HTML 字符(1 字节从 128 到 156),因此 XML 不会被转换saxonb(由于非法 HTML 个字符而拒绝它)。
我想象的解决方案是创建自己的重载 QIODevice class,并修改 writeData 方法将数据转换回 QString,迭代 QChar 并删除 128 到 156 之间 1 个字节上的每个 QChar .
现在这在理论上应该可行,但我的问题是:我不可能是第一个遇到这个问题的人,所以有没有一种方法可以通过 Qt 轻松解决 class/method例如?我找了一个已经做好的解决方案,但没有找到。
我认为处理此问题的最佳方法是在输入字段中进行输入验证。 Qt 对此有支持,请参阅 QValidator class 的文档和这些 SO 问题: Qt QLineEdit Input Validation 和(因为 QTextEdit 不支持开箱即用的验证器): QRegExpValidator with QTextEdit