QMenu - 未触发快捷方式
QMenu - shortcut is not triggered
QAction 快捷方式的正确使用方法是什么?我有带有自定义上下文菜单的 QTableView,除了其他操作,我还想执行 Refresh F5
:
// Popup
QAction *a;
a = mPopup.addAction(IconsManager::icon(fa::refresh), "Refresh", this, &UserPlaylistsSubWidget::refreshList, QKeySequence(Qt::Key_F5));
a->setShortcutVisibleInContextMenu(true);
首先,我必须设置 setShortcutVisibleInContextMenu
以使其在上下文菜单中可见,但当按 F5 时仍未触发操作(QTableView 处于活动状态且获得焦点的小部件)。 QAction::setShortcutContext
也尝试了不同的值,但仍然没有结果。
Qt 5.12。 Linux(KDE 霓虹灯)
编辑:这是弹出窗口的代码
connect(ui->list, &QWidget::customContextMenuRequested, this, &UserPlaylistsSubWidget::popUp);
void UserPlaylistsSubWidget::popUp(const QPoint &pos)
{
mPopup.popup(ui->list->viewport()->mapToGlobal(pos));
}
想通了。不知道 QTableView 有自己的操作列表,可以用 setContextMenuPolicy(Qt::ActionsContextMenu)
在自己的弹出窗口中显示它。所以这是正确的解决方案,F5 快捷键按预期工作:
QAction *a = new QAction(IconsManager::icon(fa::refresh), "Refresh", ui->list);
a->setShortcut(QKeySequence(Qt::Key_F5));
a->setShortcutVisibleInContextMenu(true);
connect(a, &QAction::triggered, this, &UserPlaylistsSubWidget::refreshList);
ui->list->addAction(a);
QAction 快捷方式的正确使用方法是什么?我有带有自定义上下文菜单的 QTableView,除了其他操作,我还想执行 Refresh F5
:
// Popup
QAction *a;
a = mPopup.addAction(IconsManager::icon(fa::refresh), "Refresh", this, &UserPlaylistsSubWidget::refreshList, QKeySequence(Qt::Key_F5));
a->setShortcutVisibleInContextMenu(true);
首先,我必须设置 setShortcutVisibleInContextMenu
以使其在上下文菜单中可见,但当按 F5 时仍未触发操作(QTableView 处于活动状态且获得焦点的小部件)。 QAction::setShortcutContext
也尝试了不同的值,但仍然没有结果。
Qt 5.12。 Linux(KDE 霓虹灯)
编辑:这是弹出窗口的代码
connect(ui->list, &QWidget::customContextMenuRequested, this, &UserPlaylistsSubWidget::popUp);
void UserPlaylistsSubWidget::popUp(const QPoint &pos)
{
mPopup.popup(ui->list->viewport()->mapToGlobal(pos));
}
想通了。不知道 QTableView 有自己的操作列表,可以用 setContextMenuPolicy(Qt::ActionsContextMenu)
在自己的弹出窗口中显示它。所以这是正确的解决方案,F5 快捷键按预期工作:
QAction *a = new QAction(IconsManager::icon(fa::refresh), "Refresh", ui->list);
a->setShortcut(QKeySequence(Qt::Key_F5));
a->setShortcutVisibleInContextMenu(true);
connect(a, &QAction::triggered, this, &UserPlaylistsSubWidget::refreshList);
ui->list->addAction(a);