如何创建具有多行字形/文本的GUI,其中字形具有x和y坐标

时间:2011-08-05 10:05:06

标签: python qt pyqt qgraphicsscene

我目前正在创建一个应用程序来编辑在时间范围内发生的事件的并行列表。在模型/后端中有一个列表列表,其中子列表按顺序包含所有项目。

每个事件都应该用字符串/字形(来自ttf字体)表示,每个文本行应该像普通的文本行一样进行编辑,并有一些显示方式。看看这张图片:

Example

基本上每行代表一行文字。每个事件都是一个字符/字形。那么它是一个文本编辑器?!不太好

  1. 没有换行
  2. 并行多行
  3. 每个字形后面都有一个单独的空格(X方向)
  4. 每个字形可以单独“向上”和“向下”移动(Y方向)(也许是最重要的一点)
  5. 如果你删除了一个字形,那么它的所有项目都会向左移动一步以缩小间隙(就像在普通的texteditor中一样)。
  6. 如果您插入一个字形右边的所有项目,请向右移动一步以创建要插入的间隙。
  7. QGraphicsLinearLayout涵盖了大多数这些点,但这种方法可能是错误的小部件/布局。你有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我建议您尝试使用QGraphicsScene对象设置QGraphicText(或者可能是从QGraphicText派生的类)。让每个人独立定位,但让他们知道他们行上的“下一个”事件,就像一个链表。然后,当插入或删除一个时,您可以快速执行该操作,并且(不幸的是,更慢)更新该行中其他事件的位置。此更新可能不是太多代码,如果它只是将位置设置为前一项右侧的X像素,但它必须更新修改后的行中的每个事件。

你可以做一些事情,右边的事件是当前事件的孩子,并推迟Qt的位置更新。我不知道这是否会更有效率,而且我不知道儿童树的深度有多深。

更新事件的Y位置(要求4)应该很简单:只需更改其Y位置。