Qt将非菜单栏键盘快捷键添加到QMainWindow
Qt adding non-menubar keyboard shortcut to QMainWindow
我有一个扩展QMainWindow
的自定义小部件。在那里,我向菜单栏添加了许多QAction
,以及每个键盘快捷键,它们工作正常。现在我想从菜单栏中删除其中一些操作,但我想保持快捷方式处于启用状态(用户可以从"帮助"对话框中了解快捷方式的可用性)。所以首先我决定让这些动作不可见。
这不起作用,所以我想如果快捷方式必须工作,该操作就不可见。所以我将其添加到主窗口,但它们仍然不起作用。任何想法,我如何让它工作?这是我的代码。无论需要发生什么,方法someMethod
.
class MyWidget: public QMainWindow {
public:
MyWidget();
};
MyWidget::MyWidget() {
QAction *myAct = new QAction(tr("&Some Text"), this);
fNextmyActPageAct->setShortcut(QKeySequence(Qt::Key_Right));
myAct->setVisible(false); //adding this does not work
connect(myAct, SIGNAL(triggered()), this, SLOT(someMethod()));
...
QMenu *someMenu = menuBar()->addMenu(tr("&Some Menu"));
someMenu->addAction(myAct); //this works, the option shows up in the menu 'Some Menu' and the shortcut works
this->addAction(myAct); //does not work
}
我测试了这段代码,它工作正常:
QAction* myAct = new QAction(this);
myAct->setShortcut(Qt::Key_Right);
connect(myAct, SIGNAL(triggered()), this, SLOT(someMethod()));
this->addAction(myAct);
不要将QAction
添加到菜单栏中。
您可以使用
QShortcut
并将键、目标小部件和相关插槽作为参数传递给它的构造函数。只需将其放入 MyWidget
的构造函数中:
QShortcut * shortcut = new QShortcut(QKeySequence(Qt::Key_Right),this,SLOT(someMethod()));
shortcut->setAutoRepeat(false);
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 如何在C++中从两个单独的for循环中添加两个数组
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 如何仅为一个函数添加延迟
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 如何将更多文件夹添加到c++include路径
- 如何将元素添加到数组的线程安全函数?
- QT通过C++添加映射QML项目
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 只能向C++添加一定数量的字符
- 将QMainWindow或Widget添加到另一个Widget-访问成员
- Qt将非菜单栏键盘快捷键添加到QMainWindow
- 将QGLWidget添加到QMainWindow
- 如何在QMainWindow中添加调整大小选项,这是QT中的无框窗口
- 将QTextEdit对象添加到QMainWindow中
- 如何在QMainWindow布局中添加小部件