2011-09-06 56 views
0

我正试图在gui应用程序中重新实现或修改选项卡代码。他们目前正在使用Qt信号和插槽系统来处理标签栏中标签的添加和删除(例如,如果标签被从一个标签小部件拖到另一个标签小部件,旧标签小部件将向新标签小部件指示新标签来了)。我在想,而不是使用它,我可以使用线程安全的单例类来简化事情。然后,当有一个标签被移动时,这个小部件只会调用单例,而不是发出信号。单身人士或信号和老虎机?

感谢

+1

那么,你想打破Qt应该工作的方式? –

+4

这将如何简化代码?你需要正确地实现一个线程安全的单例,然后重写所有的代码。发出一个信号是Qt的单个语句。 – Mat

回答

4

信号和槽。

甚至没有开始为什么单身人士会不好,数据在Qt内更新的方式会被单例方法搞乱。

+0

那么不会是这样,因为数据仍然由内部Qt函数管理。该选项卡的内部Qt函数将由管理单例调用,它将为选项卡提供一个接口,以便与其容器(很可能是MDI Sub Windows)进行交互,而选项卡没有指向其容器的指针。所以想象一下,如果我在程序中有无数个选项卡,那么管理员将负责选项卡以及它们进入哪个容器。如果发生拖放,则单例将仅通知正确的窗口小部件发生了事件,并且你需要做出反应。 – Anonymous

3

不要这样做。你在一个环境中工作,应该使用框架提供的机制。如果未来的用户界面会有多个窗口和多个实例呢?

如果可能,你应该总是尝试使用你正在使用的框架的方式。这也将有助于未来维护(升级,新员工等)

2

你想使用一个单身人士,它会接受消息并将其发回? (注意:如果你使用花园多种对象而不是单例,你基本上实现了Observer模式)。

然后你重新发明信号和插槽,它们在内部使用全局状态。为什么不使用现有的信号和插槽来替代重新编写一些困难的代码工作?