我有一个名为tabWidget的QTabWidget
。 它有三个选项卡:"基本","高级"和"当前结构"。选项卡按该顺序显示在微件中。
我想在布尔result
为假时禁用"高级"选项卡。 我以为它会像这段代码一样简单:
bool result = false;
if (result == false)
{
tabWidget->widget(1)->setDisabled(true);
}
不幸的是,此代码不会禁用选项卡,即使我检查它,它仍然处于启用状态:
tabWidget->tabBar()->isTabEnabled(1); // This returns true
为什么选项卡没有被禁用?有没有其他方法可以做到这一点?
我正在使用Qt 5.4.0。
您可以使用成员函数setTabEnabled(int index, bool enable)启用/禁用QTabWidget中的各个选项卡。
根据您的代码片段,它看起来像这样:
bool result = false;
if (result == false)
{
tabWidget->setTabEnabled(1, false);
}
你不能,不是这样。
您必须遍历主页中的所有子项并禁用它们。
像这样:
QList<QWidget*> list = parentWidget->findChildren<QWidget*>() ;
foreach( QWidget* w, list ) {
w->setEnabled( false ) ;
}
如果您使用Qt Widgets应用程序模板并且高级选项卡的名称为tabAdvanced
(您可以在对象检查器中检查名称),这应该可以工作:
ui->tabAdvanced->setEnabled(false);
您可以禁用选项卡的布局。
bool result = false;
if (result == false)
{
tabWidget->widget(1)->layout()->setDisabled(true);
}