首页 > 解决方案 > QtLineEdit 占位符:如何让用户在插入模式下将字符 1 替换为 1

问题描述

QtLineEdit - C++/Qt Creator 4.9/ Qt 5.12 / Windows 小部件应用程序

tldr:有没有办法防止占位符文本在用户输入时被立即擦除,而是在 INSERT 模式下逐个字符地替换它。

例子:

[ ******** ]
[ a******* ]
[ ab****** ]

这是一个很难研究的问题,因为我得到了很多关于使用相同关键字的完全不同问题的结果。

为了提供一些背景信息,以防有人有一个很好但不同的方法来解决这个问题:

该程序是用于加密货币的个性化公共地址生成器。用户通过编辑占位符来设计所需的地址前缀或后缀。由于生成相应的私钥变得成倍地困难,GUI 设计必须阻止替换更多的占位符字符而不是合理的。但我希望能够决定要编辑的角色位置。

有效用户输入的示例(还有更多内容,但您明白了)

[test****************test]
[testest*****************]
[*****************testest]

这将使所需的输出更容易可视化

谢谢!

标签: c++qtuser-interface

解决方案


在这种情况下,您可能希望继承 QLineEdit 并覆盖其输入处理函数之一。特别是,您可以创建一个keyPressEvent(QKeyEvent *event)调整 QLineEdit 文本的覆盖实现。占位符文本不能永久使用,因为它与模型文本分开处理。


推荐阅读