从另一个小部件复制布局

时间:2015-03-18 09:07:52

标签: qt qlayout

我有这样的情况,当一个人点击一个按钮时,它应该复制一个标签,但我遇到了tab->layout()仅返回QLayout并且我无法转换QHBoxLayout的问题}。

void MainWindow::on_dublicateSection_clicked()
{
    QWidget* tab = tabWidget->currentWidget();

    QWidget* newTab = new QWidget(tab);

    QHBoxLayout* layout = new QHBoxLayout(tab->layout());
    newTab->setLayout(layout);

    content->IncreaseArraySize(Section(tabWidget->count()));

    QString tabText = tabWidget->tabText(tabWidget->currentIndex());
    content->sections[tabWidget->count()].name = tabText;
    tabWidget->addTab(newTab,tabText);
}

1 个答案:

答案 0 :(得分:2)

其实你可以。

QHBoxLayout* hbLayout = qobject_cast<QHBoxLayout*>(tab->layout());
Q_ASSERT(hbLayout);

但请注意,QObject派生类的 NOT 是可复制的。