在 Qt 中:我创建一个 widget-ui 类,我想让该小部件出现在两个单独的基本小部件(或窗口)中的两种不同布局中。所以我想:
widget_based_class* inside = new widget_based_class(base_widget1);
QHBoxLayout *lay1=new QHBoxLayout(base_widget1);
base_widget->setLayout(lay1);
lay1->addWidget(inside);
base_widget1.show();
-------------------------------
base_widget1.hide();
QHBoxLayout *lay2=new QHBoxLayout(base_widget2);
base_widget->setLayout(lay2);
lay2->addWidget(inside);
base_widget2.show();
我怎样才能实现这个目标? (我的程序比较复杂,我没有看到代码工作。) 坦克你。
最佳答案
QWidget 只有一个父窗口部件,并且该父窗口部件中只有一个几何图形(位置和大小)。每次调用 QLayout::addWidget() 都会将该小部件重新设置为安装布局的小部件。
您对 setLayout 的第二次调用将无法按预期工作,因为您必须在设置新的布局管理器之前删除现有的布局管理器:
delete base_widget->layout();
base_widget->setLayout(lay2);
如果base_widget还没有布局管理器,则布局管理器lay2将简单地重新设置父级。
关于QT:两个布局添加相同的小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12648709/