2

我正在尝试使用 Qt5 实现简单的选项卡式界面。我使用QTabWidgetwith QToolBars 放置在其选项卡中,并将QActions 添加到QToolBars 中。

这可行,但会导致以下问题:任何操作仅在其父选项卡处于活动状态时仍可访问。如果我尝试对当前“不可见”的操作使用键盘快捷键,我将不会成功。由于没有菜单等,选项卡是唯一放置操作的地方。

以下是我将元素添加到工具栏的方法:

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);

和截图:

类似功能区的 2-tabs 界面

即使当前未打开操作的父选项卡,如何使用快捷方式访问操作?

4

1 回答 1

1

我对这不起作用并不感到惊讶,实际上您尝试在隐藏的小部件上使用快捷方式。如果这行得通,那将是非常混乱的。

明显的解决方法是添加快捷方式而不是添加到QAction始终处于活动状态的小部件中。就个人而言,我建议窗户。

在没有测试代码的情况下,我相信这应该可以工作:

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);
于 2016-02-27T14:31:04.673 回答