【发布时间】:2013-08-26 00:36:48
【问题描述】:
假设我有一个包含 5 个子选项卡的 QTabWidget。现在我想通过以下代码在 5 个子选项卡之一中显示/隐藏一个子选项卡
ui->twListTabs->widget(0)->hide(); // Hide first sub-tab
但这对我不起作用。你有什么解决办法吗?
谢谢!
【问题讨论】:
标签: c++ qt qtabwidget
假设我有一个包含 5 个子选项卡的 QTabWidget。现在我想通过以下代码在 5 个子选项卡之一中显示/隐藏一个子选项卡
ui->twListTabs->widget(0)->hide(); // Hide first sub-tab
但这对我不起作用。你有什么解决办法吗?
谢谢!
【问题讨论】:
标签: c++ qt qtabwidget
您只能选择使用:
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));
....
}
}
}
};
【讨论】:
removeTab 及更高版本,将其添加回来,只需使用findChild 函数拉出选项卡(它仍然存在,由 UI 对象管理,即使从选项卡小部件中删除后也是如此)。请在此处查看 2011 年 8 月 12 日的评论:qtcentre.org/threads/…(它适用于我,6 年后)。
为了隐藏我使用了:
ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->tabToBeRemoved));
为了表明我相信您可以使用 insertTab() 将其插入到相同的位置/索引。
在 Qt 5.15+ 中,您可以使用 setTabVisible()。
【讨论】: