我想使某些布局中的窗口小部件不可访问,因此用户将无法更改任何布局的窗口小部件的状态(我希望所有内容都变灰)。
我创建了一个SIGNAL / SLOT,该方法称为:
void MyWidget::slot( bool bChecked )
{
myLayout->setEnabled(bChecked);
std::cout << "OnAllToggled: " << bChecked <<
", isEnabled: " << myLayout->isEnabled() << std::endl;
}
一切都很棒,除了布局仍然可以访问。显然我不理解
setEnabled
方法的含义。问题:
setEnabled
是什么意思,如何使布局不可访问?谢谢! 最佳答案
我想使某些布局中的小部件无法访问,因此用户可以
无法更改任何布局的小部件的状态(我想要
一切都变灰了)。
您尝试禁用布局对象。当然,启用或禁用布局会影响小部件彼此对齐的方式:
void QLayout::setEnabled(bool enable)
如果enable为true,则启用此布局,否则禁用它。
启用的布局会根据更改动态调整;禁用的布局
好像它不存在一样。
默认情况下,所有布局都是启用的。
相反,您可以尝试禁用某些父窗口小部件的所有子项:
Disabling a widget隐式禁用其所有子级。启用
分别启用所有子窗口小部件,除非它们已经
明确禁用。无法明确启用孩子
小部件,它不是其父小部件保持禁用状态的窗口。
为此,您可以创建一些“容器”窗口小部件,使其占据您正在谈论的布局,并将嵌套布局添加到该窗口小部件以容纳所有窗口小部件。
QWidget* container = new QWidget;
myLayout->addWidget(container); // put container widget in myLayout
QHBoxLayout* hboxLayout = new QHBoxLayout(container);
hBoxLayout->addWidget(widget1);
hBoxLayout->addWidget(widget2);
hBoxLayout->addWidget(widget3);
container->setEnabled(false); // disable all nested widgets