假设我有一个包含5个子选项卡的QTabWidget。现在我想要通过以下代码来显示/隐藏其中的一个子选项卡。
ui->twListTabs->widget(0)->hide(); // Hide first sub-tab
但是这对我没有用。你有任何解决方案吗?
谢谢!
假设我有一个包含5个子选项卡的QTabWidget。现在我想要通过以下代码来显示/隐藏其中的一个子选项卡。
ui->twListTabs->widget(0)->hide(); // Hide first sub-tab
但是这对我没有用。你有任何解决方案吗?
谢谢!
你只能选择使用:
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));
....
}
}
}
};
我使用了以下代码来隐藏:
ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->tabToBeRemoved));
我相信你可以使用insertTab()将其插入到相同的位置/索引。
在Qt 5.15+中,您可以使用setTabVisible()。
removeTab
,稍后再使用findChild
函数将选项卡添加回去(即使从选项卡窗口小部件中删除后,它仍由UI对象管理)。请参见此处日期为2011年8月12日的评论:http://www.qtcentre.org/threads/16505-Hiding-a-tab-in-QTabBar-widget?p=200059#post200059(对我来说也有效,6年后)。 - Dan Nissenbaum