我有一个QTabwidget和4个QWidget子标签,我想在不使用它们时隐藏3个子标签。 使用'启用'按钮,我希望隐藏的子标签再次出现。 为了隐藏它们,我尝试了removeTab函数,如下所示
ui->tabWidget_2->removeTab(3);
ui->tabWidget_2->removeTab(2);
ui->tabWidget_2->removeTab(1);
但是,我不知道如何重新插入隐藏的标签,因为我没有指向隐藏标签的指针。 或者除了removeTab之外还有其他任何隐藏它们的好方法吗?请告诉我。我真的很感激。谢谢。
答案 0 :(得分: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
,则需要存储此图标。
答案 1 :(得分:0)
或者,如果您不清楚标签是否可见,只要它们无法进行交互,您就可以使用setTabEnabled函数。
ui->tabWidget_2->setTabEnabled( 1, enabled );
ui->tabWidget_2->setTabEnabled( 2, enabled );
ui->tabWidget_2->setTabEnabled( 3, enabled );