Как отключить одну вкладку в QTabWidget?
у меня есть QTabWidget
называют tabWidget. Он имеет три вкладки:" Basic"," Advanced "и"текущая структура". Вкладки отображаются в виджете в указанном порядке.
Я хочу отключить вкладку "Дополнительно" всякий раз, когда Boolean result
- Это ложь. Я думал, что это будет так просто, как этот код:
bool result = false;
if (result == false)
{
tabWidget->widget(1)->setDisabled(true);
}
к сожалению, этот код не отключает вкладку, она остается включенной, даже когда я ее проверяю:
tabWidget->tabBar()->isTabEnabled(1); // This returns true
Почему вкладка не отключается? Быть там другой способ сделать это?
Я использую Qt 5.4.0.
4 ответов
вы можете включить/отключить отдельные вкладки в qtabwidget с помощью функции-члена setTabEnabled (int index, bool enable).
основываясь на фрагменте кода, он будет выглядеть следующим образом:
bool result = false;
if (result == false)
{
tabWidget->setTabEnabled(1, false);
}
вы не можете, не так.
вы должны перебрать все дочерние элементы на странице и отключить их.
что-то вроде этого:
QList<QWidget*> list = parentWidget->findChildren<QWidget*>() ;
foreach( QWidget* w, list ) {
w->setEnabled( false ) ;
}
вы можете отключить макет вкладки.
bool result = false;
if (result == false)
{
tabWidget->widget(1)->layout()->setDisabled(true);
}
Если вы используете шаблон приложения Qt Widgets и имя расширенной вкладки -tabAdvanced
(вы можете проверить имя в Инспекторе объектов), это должно работать:
ui->tabAdvanced->setEnabled(false);