我正在设计/编写一个小的UI工具包(为了自我改善的目的,还有什么?)我不确定哪种API在以下意义上会更好:
一些重要的元素:
window
类代表好,一个窗口,可以显示,隐藏,最小化,最大化,全屏最大化和关闭。proxy_property
类,可以分配任意的get和set函数,例如反映应该通过某些外部API调用获取或设置的当前值。property
类可以连接到(即观察到),当它被分配一个新的/不同的值时,会将这个新值发送给它的观察者。我不确定处理窗口状态的最佳方法是什么:
hide()
,isVisible()
等成员函数访问,Qt样式。hide()
,show()
等支持,并相应更新。proxy_property
分配新状态,从而在分配新值时调用hide()
,show()
等或其组合。proxy_property
概念,因为它可能会产生比它的价值更多的开销(另一方面,这是UI代码)我们正在讨论,但仍然存在开销。
为清楚起见:
enum class window_state { windowed, hidden, minimized, maximized, fullscreen_maximized };
class window
{
public:
proxy_property<window_state> state;
//....
};
所以可以做到
some_window.state = window_state::minimized;
实际上做一些更传统的事情,例如
some_window.minimize();
最终结果当然在功能上是相同的。它只是完全不同的API。
答案 0 :(得分:0)
我认为你应该小心区分你可以设置的属性(例如,你可以观察到的属性visibility
(例如isVisible
),因为在很多情况下可观察属性依赖不只是设置。
一个控件,例如isVisible
,如果它有visibility == true
并且它是容器isVisible
。
没有理由让控件的visibility
设置可观察,事实上它可能会导致错误。
出于这个原因,我更喜欢visibility
的setter和getter,以及isVisible
的可听属性。