我的代码中有一个QAction,它链接到一个工具栏按钮和一个快捷方式。此QAction用于设置焦点并显示过滤条小部件。 QAction在快捷方式调用时需要特殊事件处理,因此焦点将在我的过滤器栏小部件上设置。然而,如果使用工具栏按钮触发,则会切换过滤条的可见性。
我的QAction是:
QAction* showFilterBar = actionCollection()->addAction("show_filter_bar");
showFilterBar->setText(i18nc("@action:inmenu Tools", "Filter"));
showFilterBar->setToolTip(i18nc("@info", "Toggle the Filter Bar"));
showFilterBar->setIcon(QIcon::fromTheme("view-filter"));
showFilterBar->setCheckable(true);
actionCollection()->setDefaultShortcut(showFilterBar, Qt::CTRL | Qt::Key_I);
connect(showFilterBar, &QAction::triggered, this, &DolphinMainWindow::toggleFilterBar);
我的toggleFilterBar函数的代码是:
void DolphinMainWindow::toggleFilterBar()
{
m_activeViewContainer->setFilterBarVisible(!m_activeViewContainer->filterBarHasFocus());
updateViewActions();
}
因此,我的问题是,我需要弄清楚是否通过按下ToolBar按钮调用了QAction,或者它是否被快捷方式调用。我怎么能找到这个?
答案 0 :(得分:1)
为QAction快捷键的快捷方式创建一个单独的插槽(它将是唯一的)。例如:
new QShortcut(QKeySequence( Qt::CTRL + Qt::Key_I),
this, SLOT(slotshowFilterBarShortCut()));
所以shortCut触发器将被单独调用。正常动作触发器将在单独的插槽中调用。