QTabWidget我想隐藏子标签

时间:2014-12-17 19:02:39

标签: c++ qt user-interface qtabwidget

我有一个QTabwidget和4个QWidget子标签,我想在不使用它们时隐藏3个子标签。 使用'启用'按钮,我希望隐藏的子标签再次出现。 为了隐藏它们,我尝试了removeTab函数,如下所示

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

但是,我不知道如何重新插入隐藏的标签,因为我没有指向隐藏标签的指针。 或者除了removeTab之外还有其他任何隐藏它们的好方法吗?请告诉我。我真的很感激。谢谢。

2 个答案:

答案 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 );