我想禁用Qt应用程序中除选定的一组窗口小部件之外的所有窗口小部件。
我想做的是使用findChildren
迭代mainWindow的所有子级,并使用setEnabled(false)
禁用除'myTable'以外的所有结果小部件。
QList<QWidget *> allWidgets = mainWindow->findChildren<QWidget *>("");
QList<QWidget*>::iterator it;
for (it = allWidgets.begin(); it != allWidgets.end(); it++) {
if ((*it)->objectName() != "myTable") // here, objectName is not working!!
{
(*it)->setEnabled(false);
}
}
上面的
objectName()
语句中的if
无法正常工作。我在那放什么 最佳答案
您可以使用accessibleName
属性。将其设置为所需的小部件,然后使用acessibleName()
函数在周期中对其进行检查。默认情况下,它是一个空字符串,因此查找小部件应该相当容易。
另一种选择是禁用所有小部件,然后直接启用您需要的小部件:
for( QWidget * w : widgets )
{
w->setEnabled(false);
}
ui->myTable->setEnabled(true);
或者,最后,您可以使用
objectName
函数设置setObjectName()
属性,并像在代码中一样使用它。