Каков наилучший способ «поменять» одно QGraphicsWidget
с другим в существующем представлении? У меня есть виджет в виде дерева и виджет метки, и я хочу, чтобы они занимали одно и то же пространство в разное время. В частности, когда есть ошибка, я хочу показать ее в метке, а когда нет ошибки, я хочу показать дерево.
Я попытался программно скрыть один и показать другой с помощью hide()
и show()
, но проблема в том, что скрытый виджет занимает место в моем QGraphicsLinearLayout
, даже когда он скрыт, оставляя пустой пробел. В качестве альтернативы, я полагаю, что я мог бы добавлять и удалять виджеты из макета, но это кажется неуклюжим, поскольку это предполагает изменение владельца виджетов, и мне нужно было бы записать их положение в макете, чтобы я мог вставить их обратно правильное место.
В Java Swing я бы использовал CardLayout
для достижения этой цели, но я не вижу эквивалента в Qt.
ОБНОВЛЕНИЕ: Я обнаружил QStackedWidget
. Однако я работаю с QGraphicsScene
, и поэтому мои виджеты не наследуются от QWidget
, а скорее QGraphicsWidget
, поэтому я не могу добавить их к QStackedWidget
.