Я бы предложил попробовать установить QGraphicsScene
с вашими событиями как QGraphicText
объекты (или, возможно, класс, производный от QGraphicText
).Пусть каждый будет позиционироваться независимо, но пусть они знают о «следующем» событии в своей строке, например, о связанном списке.Затем, когда один из них вставлен или удален, вы можете быстро выполнить эту операцию и (к сожалению, медленнее) обновить позиции других событий в строке.Это обновление может быть не слишком большим кодом, если оно просто устанавливает положение равным X пикселям справа от предыдущего элемента, но оно должно будет обновлять каждое событие в строке после изменения.
Вы можетевозможно, сделайте что-нибудь, где событие справа является дочерним по отношению к текущему событию, и отодвиньте обновления позиции в Qt.Я не знаю, будет ли это более эффективным, и я не знаю, насколько глубокими могут быть дочерние деревья.
Обновление позиции Y события (требование 4) должно быть простым: просто измениего позиция Y.