无法将选项卡中的Qwidgets复制到新选项卡

Cannot copy Qwidgets in tab to a new tab

本文关键字:选项 新选项 复制 Qwidgets      更新时间:2023-10-16

好吧,我已经疯了一天了,试图找到一个答案。我要做的就是复制一个标签中的所有小部件。我想把副本转到一个新标签上。想象一下选项卡中的表单,当您单击"新选项卡"时,它会显示相同的表单,但空白。我是QTCreator的新手,所以任何指针都会很棒。

提前感谢!

任何从QObject派生的类都不可复制。如果您想要"复制"一个小部件,那么模型-视图体系结构可能会更适合您使用两个不同的视图来表示模型。

另一个想法:你可以让每个需要可复制的类创建一个状态对象,然后可以用来设置副本的状态。

因为你只是想在多个地方显示相同的表单,你可以这样做:

首先,创建您的表单,我假设它名为MyForm:
class MyForm: QWidget {...};

然后,在父表单中:

void ContainerForm::ContainerForm(...) {
    connect(pbAddNewTab, SIGNAL(clicked()), SLOT(addNewTab()));
}
void ContainerForm::addNewTab() {
    tabWidget->addTab(new MyForm(this));
}

您可能需要拔出new,以便您可以设置信号和插槽等

如果新表单是空白的,那么它就不是副本。您只需要创建表单小部件的一个新实例。