11

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

ui->twListTabs->widget(0)->hide();           // Hide first sub-tab

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

谢谢!

4

2 回答 2

13

您只能选择使用:

void QTabWidget::removeTab(int index)

您需要将指向 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));
                ....
            }
        }
    }
};
于 2013-08-23T05:40:59.857 回答
0

为了隐藏我使用:

ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->tabToBeRemoved));

为了表明我相信您可以使用 insertTab() 将其插入到相同的位置/索引。

在 Qt 5.15+ 中,您可以使用 setTabVisible()。

于 2021-09-22T14:16:15.513 回答