如何禁用 QTabWidget 中的一个选项卡?
How do I disable one tab in a QTabWidget?
我有一个名为 tabWidget 的 QTabWidget
。它具有三个选项卡:"Basic"、"Advanced" 和 "Current Structure"。选项卡按此顺序显示在小部件中。
我想在布尔值 result
为假时禁用 "Advanced" 选项卡。我认为它会像这段代码一样简单:
bool result = false;
if (result == false)
{
tabWidget->widget(1)->setDisabled(true);
}
不幸的是,此代码不会禁用选项卡,即使我选中它,它仍保持启用状态:
tabWidget->tabBar()->isTabEnabled(1); // This returns true
为什么标签没有被禁用?还有另一种方法吗?
我正在使用 Qt 5.4.0。
不行,不能这样。
您必须遍历页面中的所有子项并禁用它们。
像这样:
QList<QWidget*> list = parentWidget->findChildren<QWidget*>() ;
foreach( QWidget* w, list ) {
w->setEnabled( false ) ;
}
您可以 enable/disable 使用成员函数 setTabEnabled(int index, bool enable).
QTabWidget 中的单个选项卡
根据您的代码片段,它看起来像这样:
bool result = false;
if (result == false)
{
tabWidget->setTabEnabled(1, false);
}
您可以禁用选项卡的布局。
bool result = false;
if (result == false)
{
tabWidget->widget(1)->layout()->setDisabled(true);
}
如果您使用 Qt Widgets Application 模板并且 Advanced 选项卡的名称是 tabAdvanced
(您可以在 Object Inspector 中检查该名称),这应该有效:
ui->tabAdvanced->setEnabled(false);
我有一个名为 tabWidget 的 QTabWidget
。它具有三个选项卡:"Basic"、"Advanced" 和 "Current Structure"。选项卡按此顺序显示在小部件中。
我想在布尔值 result
为假时禁用 "Advanced" 选项卡。我认为它会像这段代码一样简单:
bool result = false;
if (result == false)
{
tabWidget->widget(1)->setDisabled(true);
}
不幸的是,此代码不会禁用选项卡,即使我选中它,它仍保持启用状态:
tabWidget->tabBar()->isTabEnabled(1); // This returns true
为什么标签没有被禁用?还有另一种方法吗?
我正在使用 Qt 5.4.0。
不行,不能这样。
您必须遍历页面中的所有子项并禁用它们。
像这样:
QList<QWidget*> list = parentWidget->findChildren<QWidget*>() ;
foreach( QWidget* w, list ) {
w->setEnabled( false ) ;
}
您可以 enable/disable 使用成员函数 setTabEnabled(int index, bool enable).
QTabWidget 中的单个选项卡根据您的代码片段,它看起来像这样:
bool result = false;
if (result == false)
{
tabWidget->setTabEnabled(1, false);
}
您可以禁用选项卡的布局。
bool result = false;
if (result == false)
{
tabWidget->widget(1)->layout()->setDisabled(true);
}
如果您使用 Qt Widgets Application 模板并且 Advanced 选项卡的名称是 tabAdvanced
(您可以在 Object Inspector 中检查该名称),这应该有效:
ui->tabAdvanced->setEnabled(false);