大家可以在Qt的帮助看到这两个QML类,他们的功能是差不多的,但是这里会有一些差别,我仔细看了一看,觉得要在实际项目中使用,需要注意这几点。

首先引入的包不一样。Shortcut只需要Qt Quick包即可引入。它在Qt 5.5就引入了。而Action则是QtQuick.Controls包的类。顺便说一句,Qt Quick Controls 2在Qt 5.10中也会引入Action,作为Qt Quick Controls 2有效的补充。现阶段(2017年09月19日)暂时用不上呢。可以尝试一下Qt 5.10 Alpha版本。

然后呢,虽然二者都可以表示通过快捷键触发特定的功能,但是当Shortcut遇到相同组合键的话,会触发activatedAmbiguously()这个信号处理器。而Action则没有这个功能。

最后,Shortcut几乎是独立存在的,而Action则可以和Button以及Menu等向结合,提供统一的动作处理方法。:kiwi: