2015-03-18 4 views
0

У меня так, когда человек нажимает кнопку, он должен дублировать вкладку, но я столкнулся с проблемой, что 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); 
} 

ответ

2

Фактически вы можете.

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

Но имейте в виду, что QObject производные классы НЕ копируемыми.

Смежные вопросы