python - QT/pyqt 标签/ token 输入

标签 python qt qt5 pyqt5

是否可以在 QT5/pyqt5 中创建标签/ token 输入?

我正在创建 gui 应用程序,用户可以在其中存储图像/照片并添加标签。特定标签已经在数据库中,用户应该能够从现有标签中进行选择(或根据需要创建新标签)。 让我们说: 图 1 标签: (云),(树),(山),路

用户从数据库中选择了前 2 个标签并添加了数据库中没有的“道路”。

目前我可以使用数据库数据创建和填充 QComboBox,这些数据将附加到 QLineEdit,稍后我可以通过格式化文本来处理它。但是输入标签/ token 之类的东西会更方便(完全如附图所示):

  • 单行输入
  • 每个标签/文本都有自己的“删除”按钮
  • 在视觉上很容易区分现有标签和刚刚添加的标签(文本与带关闭按钮的框)

QT 是否有开箱即用的类似功能,或者我应该为自定义小部件中的每个文本创建图形图标?

enter image description here

最佳答案

是的,这是可能的。我有一个这样的小部件的天真实现 here .它还没有完成,但关键功能已经实现。

因此,实现是基于QTextLayout 类。 Completed 标记作为类成员保存,并在 paintEvent 方法中绘制。 Сurrently editing token 是用 QTextLayout 对象绘制的。光标也是用 QTextLayout 对象绘制的。用户按键在 keyPressEvent 中处理(键入、导航)。该小部件还有一个完成器。这是核心思想,更多细节请看代码。

有很多工作要做:可定制的外观、标记化策略、通过单击十字删除等。但它可以用于您自己的目的或作为您自己的小部件的起点。

QLineEdit的实现对我很有帮助。

关于python - QT/pyqt 标签/ token 输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52032036/

相关文章:

c++ - 多屏幕/窗口 QT QML C++ 应用程序

c++ - 信号 - 循环内的槽连接

c++ - 如何从 QByteArray 使用 QPluginLoader 加载插件

qml - 如何使用 C++ 实例化一个元素

c++ - 运行 Qt hello world 时进程退出代码 0xC0000135

python - 在linux中一次对一个文件夹中的一堆文件运行Python代码

python - python 中的 NoneType 错误

c++ - 如何从 Qt Creator 保存和导出自定义构建步骤?

python - 如何使用 python/boto 获取最新的 aws 卷快照 id#?

python - pip3安装mysql错误