QTabWidget 我想隐藏子标签

Posted

技术标签:

【中文标题】QTabWidget 我想隐藏子标签【英文标题】:QTabWidget I'd like to hid sub-tabs 【发布时间】:2014-12-17 19:02:39 【问题描述】:

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

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,那么你也需要存储这个图标。

【讨论】:

【参考方案2】:

或者,如果您不介意标签可见,只要它们无法交互,您可以使用 setTabEnabled 函数。

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

【讨论】:

不幸的是 setTabEnabled 没有隐藏选项卡,只是将其重新绘制为禁用,有没有办法使用 setTabEnabled 隐藏选项卡? @Chernobyl 我不知道。当隐藏标签不那么重要时,我将我的答案列为替代答案,只是确保它们不能被交互。 @caackley 感谢您的评论!因为我需要隐藏标签,将标签变灰不是我的选择。谢谢你。

以上是关于QTabWidget 我想隐藏子标签的主要内容,如果未能解决你的问题,请参考以下文章

PyQT Qtabwidget 隐藏和关闭某些选项卡

QTabWidget 如何只隐藏窗格?

在 QTabWidget (PyQT) 中添加已删除的选项卡

如何仅隐藏 QTabWidget 栏 PyQt5 [关闭]

如何在 QTabWidget Stretch 中制作标签以避免滚动

如何制作没有页面的 QTabWidget