简单功能区:如何在 QTabBar 中使用 QActions?
Simple ribbon: how to use QActions within QTabBar?
我正在尝试使用 Qt5 实现简单的选项卡式界面。我使用 QTabWidget
并将 QToolBar
放在其选项卡内,然后将 QAction
添加到 QToolBar
中。
可行,但会导致以下问题:任何操作仅在其父选项卡处于活动状态时才可访问。如果我尝试对当前 "invisible" 操作使用键盘快捷键,我将不会成功。由于没有菜单等,选项卡是唯一放置操作的地方。
以下是我将元素添加到工具栏的方法:
QTabWidget *ribbon = new QTabWidget(window);
QToolBar *tool_bar_game = new QToolBar(tab_game);
QAction *action_go_to_next_level = new QAction(window);
action_go_to_next_level->setText(QApplication::translate("Window", "&Next", 0));
action_go_to_next_level->setIcon(QIcon::fromTheme("go-last"));
action_go_to_next_level->setShortcut(QApplication::translate("Window", "PgDown", 0));
ribbon->addTab(tool_bar_game, tr("Game"));
tool_bar_game->addAction(action_go_to_next_level);
和截图:
即使操作的父选项卡当前未打开,我怎样才能使用快捷方式访问操作?
我对这不起作用并不感到惊讶,实际上您尝试在隐藏的小部件上使用快捷方式。如果这行得通,那将是非常混乱的。
明显的解决方法是将快捷方式而不是 QAction
添加到始终处于活动状态的小部件。就个人而言,我建议 window.
在没有测试代码的情况下,我相信这应该可行:
QTabWidget *ribbon = new QTabWidget(window);
QToolBar *tool_bar_game = new QToolBar(tab_game);
QAction *action_go_to_next_level = new QAction(window);
action_go_to_next_level->setText(QApplication::translate("Window", "&Next", 0));
action_go_to_next_level->setIcon(QIcon::fromTheme("go-last"));
QShortcut *page_down = new QShortcut(QKeySequence("PgDown"), window);
// trigger the action when the shortcut is activated
QObject::connect(page_down, &QShortcut::activated,
action_go_to_next_level, &QAction::trigger);
ribbon->addTab(tool_bar_game, tr("Game"));
tool_bar_game->addAction(action_go_to_next_level);
我正在尝试使用 Qt5 实现简单的选项卡式界面。我使用 QTabWidget
并将 QToolBar
放在其选项卡内,然后将 QAction
添加到 QToolBar
中。
可行,但会导致以下问题:任何操作仅在其父选项卡处于活动状态时才可访问。如果我尝试对当前 "invisible" 操作使用键盘快捷键,我将不会成功。由于没有菜单等,选项卡是唯一放置操作的地方。
以下是我将元素添加到工具栏的方法:
QTabWidget *ribbon = new QTabWidget(window);
QToolBar *tool_bar_game = new QToolBar(tab_game);
QAction *action_go_to_next_level = new QAction(window);
action_go_to_next_level->setText(QApplication::translate("Window", "&Next", 0));
action_go_to_next_level->setIcon(QIcon::fromTheme("go-last"));
action_go_to_next_level->setShortcut(QApplication::translate("Window", "PgDown", 0));
ribbon->addTab(tool_bar_game, tr("Game"));
tool_bar_game->addAction(action_go_to_next_level);
和截图:
即使操作的父选项卡当前未打开,我怎样才能使用快捷方式访问操作?
我对这不起作用并不感到惊讶,实际上您尝试在隐藏的小部件上使用快捷方式。如果这行得通,那将是非常混乱的。
明显的解决方法是将快捷方式而不是 QAction
添加到始终处于活动状态的小部件。就个人而言,我建议 window.
在没有测试代码的情况下,我相信这应该可行:
QTabWidget *ribbon = new QTabWidget(window);
QToolBar *tool_bar_game = new QToolBar(tab_game);
QAction *action_go_to_next_level = new QAction(window);
action_go_to_next_level->setText(QApplication::translate("Window", "&Next", 0));
action_go_to_next_level->setIcon(QIcon::fromTheme("go-last"));
QShortcut *page_down = new QShortcut(QKeySequence("PgDown"), window);
// trigger the action when the shortcut is activated
QObject::connect(page_down, &QShortcut::activated,
action_go_to_next_level, &QAction::trigger);
ribbon->addTab(tool_bar_game, tr("Game"));
tool_bar_game->addAction(action_go_to_next_level);