Qt – Shotcut – 菜单栏动作实现原理

内容纲要

Shotcut 在源码中定义了 actions.h 文件,此头文件内有一个单例类,继承自 QObject

#define Actions ShotcutActions::singleton()

使用 Actions 宏即可快速拿到此单例类。

添加新的 Action 于此可以调用类函数

void add(const QString &name, QAction *action, QString group = "");
QAction* action = new QAction(tr("Add Audio Track"), this);
// Set up Shortcut
action->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_U));
connect(action, &Action::triggered, this, [&]() {
    addAudioTrack();
})
Actions.add("timelineAddAudioTrackAction", action)

获取已经添加的 Action 可以调用此运算符

QAction *operator [](const QString &key);
Actions["timelineAddAudioTrackAction"];

将 Action 添加到 QMenu 上

QMenu *trackOperationsMenu = new QMenu(tr("Track Operations"), this);
trackOperationsMenu->addAction(Actions["timelineAddAudioTrackAction"]);

Related Posts

发表回复

同步Schの秘密防空洞