在QTabWidget上显示/隐藏子选项卡

Tan*_*iet 6 c++ qt qtabwidget

假设我有一个包含5个子标签的QTabWidget.现在,我想通过以下代码在5个子选项卡之一中显示/隐藏子选项卡

ui->twListTabs->widget(0)->hide();           // Hide first sub-tab
Run Code Online (Sandbox Code Playgroud)

但这对我不起作用.你有什么解决办法?

谢谢!

use*_*165 10

您只能选择使用:

void QTabWidget::removeTab(int index)
Run Code Online (Sandbox Code Playgroud)

您需要将指针存储到选项卡中的QWidget,以便以后可以插入它.

你可以做以下事情:

class TabWidget : public QTabWidget
{
   Q_OBJECT

      enum tabwidgets {tabwidget1,tabwidget2,...,number_of_tabwidgets};
      QWidget* widgets_[number_of_tabwidgets];
   public:
      TabWidget(QWidget* parent=0)
      : QWidget(parent)
      {
         for(int i(0);i<number_of_tabwidgets;++i)
     {
        switch(i)
        {
           case tabwidget1:
              insertTab(i,widgets_[i]=new TabWidget1,QString::number(i));
           ....
        }
     }
      }
};
Run Code Online (Sandbox Code Playgroud)

  • Qt 5.15引入了setTabVisible方法,参见:https://doc.qt.io/qt-5/qtabwidget.html#setTabVisible (6认同)
  • 如果您在Qt Creator的UI Designer中有选项卡,则不需要这种复杂性.只需使用`removeTab`然后再添加它,只需使用`findChild`函数来拉出标签(它仍然存在,由UI对象管理,即使从标签小部件中删除).请参阅日期为2011年8月12日的评论:http://www.qtcentre.org/threads/16505-Hiding-a-tab-in-QTabBar-widget?p=200059#post200059(这对我有用,6年后). (2认同)