是否可以在 QT5/pyqt5 中创建标签/ token 输入?
我正在创建 gui 应用程序,用户可以在其中存储图像/照片并添加标签。特定标签已经在数据库中,用户应该能够从现有标签中进行选择(或根据需要创建新标签)。 让我们说: 图 1 标签: (云),(树),(山),路
用户从数据库中选择了前 2 个标签并添加了数据库中没有的“道路”。
目前我可以使用数据库数据创建和填充 QComboBox,这些数据将附加到 QLineEdit,稍后我可以通过格式化文本来处理它。但是输入标签/ token 之类的东西会更方便(完全如附图所示):
- 单行输入
- 每个标签/文本都有自己的“删除”按钮
- 在视觉上很容易区分现有标签和刚刚添加的标签(文本与带关闭按钮的框)
QT 是否有开箱即用的类似功能,或者我应该为自定义小部件中的每个文本创建图形图标?
最佳答案
是的,这是可能的。我有一个这样的小部件的天真实现 here .它还没有完成,但关键功能已经实现。
因此,实现是基于QTextLayout
类。 Completed 标记作为类成员保存,并在 paintEvent
方法中绘制。 Сurrently editing token 是用 QTextLayout
对象绘制的。光标也是用 QTextLayout
对象绘制的。用户按键在 keyPressEvent
中处理(键入、导航)。该小部件还有一个完成器。这是核心思想,更多细节请看代码。
有很多工作要做:可定制的外观、标记化策略、通过单击十字删除等。但它可以用于您自己的目的或作为您自己的小部件的起点。
QLineEdit
的实现对我很有帮助。
关于python - QT/pyqt 标签/ token 输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52032036/