c++ - 哪个类应该处理快捷方式?

标签 c++ qt keyboard-shortcuts

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

我知道如何实现所有功能,但问题是在哪里实现这些功能? 是否应该让所有快捷方式成为 QMainWindow 的成员并让它处理所有事情,还是应该尝试将快捷方式分离到它们相应的类中? 例如,创建一个新选项卡 (ctrl+t) 将成为 QTabWidget 的一部分。 现在 ctrl+s(保存,duh)怎么样,它应该是 QTextEdit 的一部分,因为它是我正在保存的文本,还是..?

基本上我的程序包含三个类; QMainWindow,其中包含QTabWidget,每个tab都是一个QTextEdit

最佳答案

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

我通常通过 QAction::setShortcut() 处理快捷方式方法,因此实际上更多的是关于在哪里存储 QAction 对象有意义。这通常最终成为我的 MainWindow 类,因为许多操作都在 MainWindw 的菜单中使用。当这些操作被触发时,结果通常是通知 TabWidget,后者又通知所有必要的选项卡,并且可以处理诸如“关闭所有”操作之类的事情,仅触发一个保存提示。

但是,如果将那些 QAction 存储在 MainWindow 对象上没有意义,那么我不会这样做,就像我个人通常可以使用的上下文菜单一样标签。

希望对您有所帮助。

关于c++ - 哪个类应该处理快捷方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17446317/

相关文章:

c++ - 销毁时神秘的段错误

c++ - 在嵌套的 'try' 中重新抛出异常是否合法?

c++ 多重继承强制转换

c++ - 如何从 QQuickFramebufferObject 中访问关联的渲染器对象

android - 如何导航到实现方法而不是 Android Studio 中的类

c++ - 使用 QT 中的输入更改拨号 slider 的值?

c++ - 我如何让 QGeoPositionInfoSource 在带有 iOS 的 Qt 5.5.1 中发出信号?

c++ - 如何使用 Qt 处理 json 中编码的西里尔字母数据?

c# - 用于书签的 Visual Studio 快捷键

windows - Windows 应用程序应使用哪些组合键以避免冲突?