我想在一些布局中使窗口小部件无法访问,因此用户将无法更改任何布局的窗口小部件的状态(我希望所有内容都变灰).我创建了一个SIGNAL/SLOT,该方法被称为:
void MyWidget::slot( bool bChecked )
{
myLayout->setEnabled(bChecked);
std::cout << "OnAllToggled: " << bChecked <<
", isEnabled: " << myLayout->isEnabled() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
一切都很好,除了布局仍然可访问.显然我不明白setEnabled方法的含义.问题:什么setEnabled意思是什么,如何使布局无法访问?谢谢!
Ale*_*r V 11
我想在一些布局中使窗口小部件无法访问,因此用户将无法更改任何布局的窗口小部件的状态(我希望所有内容都变灰).
并尝试禁用布局对象.当然,启用或禁用布局会影响窗口小部件彼此对齐的方式:
void QLayout :: setEnabled(bool enable)
如果enable为true,则启用此布局,否则禁用它.
启用的布局会动态调整以适应更改; 禁用的布局就好像它不存在一样.
默认情况下,启用所有布局.
相反,您可以尝试禁用某些父窗口小部件的所有子项:
禁用窗口小部件会隐式禁用其所有子窗口.除非已明确禁用所有子窗口小部件,否则分别启用它们.当父窗口小部件保持禁用状态时,无法显式启用不是窗口的子窗口小部件.
为此,您可以创建一些占用您正在讨论的布局的"容器"窗口小部件,并将嵌套布局添加到该窗口小部件以容纳所有窗口小部件.
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
Run Code Online (Sandbox Code Playgroud)