哪个班级应该照顾快捷方式?

时间:2013-07-03 11:05:31

标签: c++ qt keyboard-shortcuts

我正在编写一个简单的文本编辑器,只有很少的基本功能。 目前它的QMainWindow QTabWidget设置为centralWidget。 我现在正在实施的是一些捷径; ctrl+s要保存,ctrl+o要打开,ctrl+t/ctrl+w要创建新标签/关闭当前标签。

我知道如何实现所有功能,但问题是哪里来实现这些功能? 如果所有快捷方式都是QMainWindow的成员并让它照顾好一切,或者我应该尝试将快捷方式分成他们的对应类吗? 例如,创建新标签(ctrl+t)将成为QTabWidget的一部分。 那么ctrl+s(保存,duh)应该是QTextEdit的一部分,因为它是我正在保存的文本,还是..?

基本上我的程序包含三个类; QMainWindow,其中包含QTabWidget,每个标签均为QTextEdit

1 个答案:

答案 0 :(得分:3)

您的设置听起来很像我构建的许多应用程序。

我通常通过QAction::setShortcut()方法处理快捷方式,所以它更多地关于存储QAction对象的意义。这通常最终成为我的MainWindow类,因为很多动作都在MainWindw的菜单中使用。触发这些操作时,通常会通知TabWidget,而TabWidget会通知所有必需的选项卡,并且可以处理触发一个保存提示的“全部关闭”操作。

但是,如果将这些QAction存储在MainWindow对象上是没有意义的,那么我就不会这样做,就像上下文菜单中我通常可以在各个标签上找到的那样。< / p>

希望有所帮助。