简单功能区:如何在QTabar中使用QActions?

简单功能区:如何在QTabar中使用QActions?,qt,ribbon,qaction,qtabbar,qtoolbar,Qt,Ribbon,Qaction,Qtabbar,Qtoolbar,我正在尝试用Qt5实现简单的选项卡式接口。我使用QTabWidget将QToolBars放置在其选项卡中,并将QActions添加到QToolBars中 这会起作用,但会导致以下问题:任何操作只有在其父选项卡处于活动状态时才可访问。若我尝试使用键盘快捷键进行当前“不可见”的操作,我将不会成功。由于没有菜单等,选项卡是唯一放置操作的地方 以下是我如何将元素添加到工具栏: QTabWidget *ribbon = new QTabWidget(window); QTool

我正在尝试用Qt5实现简单的选项卡式接口。我使用
QTabWidget
QToolBar
s放置在其选项卡中,并将
QAction
s添加到
QToolBar
s中

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

以下是我如何将元素添加到工具栏:

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
添加到始终处于活动状态的小部件中)。就我个人而言,我建议打开窗户

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

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

为什么不将
QToolBar
s移到
QTabBar
之外?如果我将工具栏移到tabbar之外,我将如何在它们之间切换?能否添加屏幕截图?我有点困惑你的QTabBar到底在哪里。这是:@Vercetti,你知道图书馆吗?是的,这很有效!谢谢!另外,我应该自己删除析构函数中的快捷键,还是窗口会为我删除?@Vercetti:很确定窗口会为你删除快捷键,就像它也会删除所有的子窗口小部件一样。