2014-12-17 2 views
2

У меня есть подтексты QTabwidget и 4 QWidget, и я бы хотел скрыть 3 вкладки, когда я их не использую. С помощью кнопки «Включить» я хочу, чтобы скрытые суб-вкладки отображались снова. Для того, чтобы скрыть их, я попробовал функцию removeTab нижеQTabWidget Я хотел бы спрятать суб-вкладки

ui->tabWidget_2->removeTab(3); 
ui->tabWidget_2->removeTab(2); 
ui->tabWidget_2->removeTab(1); 

Но тогда, я не знаю, как вновь включить скрытые вкладки Потому что у меня нет указателя на скрытые вкладки. Или есть ли другой хороший способ скрыть их, кроме removeTab? Пожалуйста, дайте мне знать. Было бы очень благодарно. Благодарю.

ответ

1

Вам нужно сохранить «копию» вашей вкладки где-нибудь и вставить эту вкладку еще раз. Например:

QMap<int,QPair<QWidget*,QString> > map; 
    map.insert(0,QPair<QWidget*,QString>(ui->tabWidget->widget(0),ui->tabWidget->tabText(0))); 
    //store index, widget and title of tab 
    ui->tabWidget->removeTab(0); 
    ui->tabWidget->insertTab(0,map.value(0).first,map.value(0).second); 
    //restore data 

Я не могу вам сказать, что это лучший подход, но removeTab удаляет вкладку, но не ваш виджет. Поэтому, когда я использовал этот код (с QTextEdit как виджет внутри вкладки, например) и введите несколько слов, моя вкладка была успешно восстановлена, и я не потерял свои данные. Если вы используете QIcon, вам также понадобится сохранить этот значок.

+0

Спасибо! Это отлично поработало для меня! – user3734823

0

В качестве альтернативы, если вы не против отображения табуляции, пока они не могут взаимодействовать, вы можете использовать функцию setTabEnabled.

ui->tabWidget_2->setTabEnabled(1, enabled); 
ui->tabWidget_2->setTabEnabled(2, enabled); 
ui->tabWidget_2->setTabEnabled(3, enabled); 
+0

К сожалению, setTabEnabled не скрывает вкладку, только перерисовывает ее как отключен, есть ли способ скрыть вкладку с помощью setTabEnabled? – Chernobyl

+0

@ Чернобыль Не то, что я знаю. Я перечислил свой ответ в качестве альтернативного ответа, когда скрытые вкладки не так важны, просто убедитесь, что с ними невозможно взаимодействовать. – MildWolfie

+0

@caackley Спасибо за комментарий! Потому что мне нужно было скрыть вкладки, поглаживая вкладки, для меня это не вариант. Спасибо, тo. – user3734823