2015-10-06 3 views
0

Ну, дело в том, что у меня есть tabwidget, созданный в qtcreator, с множеством вкладок, и на вкладках есть много объектов lineedit и других объектов. Закрытое свойство tabWidget установлено на true. я выполнить программу и закрыть вкладки, но когда я хочу, чтобы снова открыть вкладку, она пуста, я использую этот код:Добавление вкладки в QTabWidget. пусто?

tabs->addTab(new QWidget(),"TAB 1"); 

Я хочу использовать ту же вкладку создать на дизайне QtCreator.

+0

Хорошо. Я нашел решение: ui-> tabWidget-> addTab (ui-> name_tab, QIcon («icon.png»), «NAMETAB»); – MRlinux

+0

Опубликуйте его как ответ, который другие люди могут легко найти и использовать в будущем. – demonplus

ответ

0

Ваша проблема заключается в том, что вы добавляете пустой виджет в вашем коде:

tabs->addTab(new QWidget(),"TAB 1"); 

Вместо этого вы должны держать вас виджеты и добавить их так:

QWidget* widget; // it is stored 
int index = ui->tabWidget->addTab(widget, "TAB 1"); 

Где взять эти виджеты?

Это не достаточно, чтобы установить закрываемый истинно, вы также использовать сигнал/слот:

connect(ui->tabWidget, SIGNAL(tabCloseRequested(int)), this, SLOT(closeTab(int))); 

И, наконец:

void YourWindow::closeTab(int index) 
{ 
    // do something else 

    QWidget* widget = ui->tabWidget->widget(index); 
    ui->tabWidget->removeTab(index); 

    // here you can remember it and use later when adding tab 
} 
+0

Ваше решение хорошее, только для последней вкладки, которую пользователь закрывает, но не для определенной вкладки. – MRlinux

+0

ОК, я думал, что вам нужно правильно хранить виджеты. Я не имел в виду сохранение только последней вкладки – demonplus

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