gpt4 book ai didi

c++ - 一种在 Qt 中管理 GUI 状态的 RAII

转载 作者:太空狗 更新时间:2023-10-29 20:00:27 25 4
gpt4 key购买 nike

我想知道您是否认为在 Qt 中使用类似于 RAII 的模式来管理 GUI 状态是否合理。通过 GUI 状态我的意思是:我有一些小部件(包括鼠标光标状态)我想在我离开一些方法后(不)可见/启用/改变,我不想把我所做的一切都放在以这种方式进行巨大的尝试:

widget1->show();
...
widgetN->show();

try {
...
}
catch(...) {
widget1->hide();
...
widgetN->hide();

throw;
}

widget1->hide();
...
widgetN->hide();

如果我创建一个对象,允许我在其构造函数上关联 hide/setEnabled/setCursor 函数(可能是一个 boost 仿函数),并在其析构函数上调用这个关联函数(前提是这个函数可以抛出的所有异常都被吃掉/迷失在析构函数中)我可以有一个更清晰的代码。这合理吗?我没看到什么?

我们非常欢迎任何意见/建议。

提前致谢

费德里科

最佳答案

这是完全合理的。您所追求的技术称为 ScopeGuard,在 Boost 中称为 ScopeExit。

这个想法是,当您第一次进行更改时,您定义了一些要在范围末尾运行的代码,然后处理其余代码。如果需要,您可以“关闭”代码。

我会打一个例子,但我在手机上。

关于c++ - 一种在 Qt 中管理 GUI 状态的 RAII,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6902490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com