我目前正在创建一个应用程序来编辑在时间范围内发生的事件的并行列表。在模型/后端中有一个列表列表,其中子列表按顺序包含所有项目。
每个事件都应该用字符串/字形(来自ttf字体)表示,每个文本行应该像普通的文本行一样进行编辑,并有一些显示方式。看看这张图片:
基本上每行代表一行文字。每个事件都是一个字符/字形。那么它是一个文本编辑器?!不太好
QGraphicsLinearLayout涵盖了大多数这些点,但这种方法可能是错误的小部件/布局。你有什么建议吗?
答案 0 :(得分:1)
我建议您尝试使用QGraphicsScene
对象设置QGraphicText
(或者可能是从QGraphicText
派生的类)。让每个人独立定位,但让他们知道他们行上的“下一个”事件,就像一个链表。然后,当插入或删除一个时,您可以快速执行该操作,并且(不幸的是,更慢)更新该行中其他事件的位置。此更新可能不是太多代码,如果它只是将位置设置为前一项右侧的X像素,但它必须更新修改后的行中的每个事件。
你可以做一些事情,右边的事件是当前事件的孩子,并推迟Qt的位置更新。我不知道这是否会更有效率,而且我不知道儿童树的深度有多深。
更新事件的Y位置(要求4)应该很简单:只需更改其Y位置。