简单的功能区:如何在QTabBar中使用QActions?
我试图用Qt5实现简单的选项卡式界面。我使用QTabWidget
和QToolBar
s放置在其标签中,并将QAction
s添加到QToolBar
s。简单的功能区:如何在QTabBar中使用QActions?
这可行,但会导致以下问题:只有在其父标签处于活动状态时,任何操作才可访问。如果我尝试将键盘快捷键用于当前“隐形”动作,我将无法取得成功。由于没有菜单等,选项卡是唯一放置动作的地方。
以下是我的元素添加到工具栏:
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);
Yeap,工作!非常感谢! P. S.我应该在析构函数中删除''快捷键我自己还是窗口会为我做? – Vercetti
@Vercetti:很确定窗口可以帮你,就像它也删除了它的所有子窗口小部件一样。 –
你为什么不动'QTabBar'之外的'QToolBar's? –
如果我移动tabbar外的工具栏,我将如何在它们之间切换? – Vercetti
你可以添加一个截图吗?我有点困惑你的QTabBar在哪里。 –