How do I disable one tab in a QTabWidget?

Joey Kleingers picture Joey Kleingers · Apr 17, 2015 · Viewed 21.5k times · Source

I have a QTabWidget called tabWidget. It has three tabs: "Basic", "Advanced", and "Current Structure". The tabs are displayed in the widget in that order.

I want to disable the "Advanced" tab whenever the Boolean result is false. I thought it would be as simple as this code:

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

Unfortunately, this code does not disable the tab, it remains enabled even when I check it:

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

Why doesn't the tab become disabled? Is there another way to do it?

I am using Qt 5.4.0.

Answer

Daniel Hedberg picture Daniel Hedberg · Apr 17, 2015

You can enable/disable individual tabs in a QTabWidget using the member function setTabEnabled(int index, bool enable).

Based on your code snippet, it would look like this:

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