Rob*_*b H 6 c++ layout qt widget
QGraphicsWidget在现有视图中"交换" 彼此的最佳方式是什么?我有一个树视图小部件和一个标签小部件,我希望它们在不同的时间占用相同的空间.具体来说,当出现错误时,我想在标签中显示它,当没有错误时,我想显示树.
我曾尝试编程隐藏一个并显示与其他hide()和show(),但问题是,隐性窗口小部件占用空间,我QGraphicsLinearLayout即使它是隐藏的,留下一个空的差距.另外,我想我可以添加和删除布局中的小部件,但似乎笨拙,因为它意味着一个变化在小部件的所有权,我需要记录在布局自己的位置,所以我可以将其插入回正确的地方.
在Java Swing中,我使用a CardLayout来实现这一点,但我没有看到Qt中的等价物.
更新:我发现了QStackedWidget.但是,我正在使用a QGraphicsScene,因此我的小部件不会继承QWidget而是QGraphicsWidget,所以我无法将它们添加到QStackedWidget.
当您将 QWidget 添加到布局时,布局的所有者将不会获得您的小部件的所有权。您必须将您的小部件添加为其他 QWidget 的子部件(通常在子部件的构造函数中传递父部件)。
因此,从布局中删除小部件只会将其从布局所有者的显示行为中删除。
在您的情况下,您可以从布局中删除小部件并将其隐藏。如果您想再次显示它,请显示它并将小部件添加到布局中。要将其插入正确的位置,您必须在移除它时保存它的位置。
希望有帮助