如何禁用QTabWidget中的一个选项卡?

时间:2015-04-17 19:35:12

标签: qt qt4 qt5 qtabwidget qtabbar

我有一个名为tabWidget的QTabWidget。它有三个选项卡:"基本","高级"和"当前结构"。选项卡按顺序显示在窗口小部件中。

我想禁用"高级"每当布尔result为false时选项卡。我认为这将像这段代码一样简单:

bool result = false;
if (result == false)
{
  tabWidget->widget(1)->setDisabled(true);
}

不幸的是,此代码不会禁用该选项卡,即使我检查它也会保持启用状态:

tabWidget->tabBar()->isTabEnabled(1);  // This returns true

为什么标签不会被禁用?还有另一种方法吗?

我正在使用Qt 5.4.0。

4 个答案:

答案 0 :(得分:21)

您可以使用成员函数setTabEnabled(int index, bool enable)启用/禁用QTabWidget中的各个标签。

根据您的代码段,它看起来像这样:

bool result = false;
if (result == false)
{
  tabWidget->setTabEnabled(1, false);
}

答案 1 :(得分:1)

你不能,不是这样。

您必须遍历页面中的所有子项并禁用它们。

这样的事情:

QList<QWidget*> list = parentWidget->findChildren<QWidget*>() ;
foreach( QWidget* w, list ) {
   w->setEnabled( false ) ;
}

答案 2 :(得分:0)

您可以禁用标签的布局。

bool result = false;
if (result == false)
{
  tabWidget->widget(1)->layout()->setDisabled(true);
}

答案 3 :(得分:-1)

如果您使用Qt Widgets应用程序模板,而高级选项卡的名称为tabAdvanced(您可以在对象检查器中检查名称),这应该有效:

ui->tabAdvanced->setEnabled(false);