我正在写一个应用程序,我使用自己的快捷方式.它看起来像这样:
myShortcut= new QShortcut(Qt::SHIFT + Qt::Key_B,this);
connect(myShortcut, SIGNAL(activated()), this, SLOT(setCameraBack()));
Run Code Online (Sandbox Code Playgroud)
我在主窗口小部件的构造函数中定义它,它工作正常,直到我点击其中一个也位于主窗口小部件上的旋转框按钮.之后我的快捷方式停止工作,直到我点击按钮或复选框后它才能工作.当我这样做时,一切都很好.我想补充说,点击旋转框后,它似乎是"活动的"(因为光标仍然在其上"闪烁"),直到我点击其他按钮之一.你知道什么是错的吗?是某种过程或事件问题吗?感谢所有答案~Marwroc
当快捷方式的父窗口小部件正在接收事件时,Qt 的事件循环将“侦听”快捷方式。
当 QSpinBox 具有键盘焦点时,QShortcut 对象的父对象不再接收事件。因此,只有从 QSpinBox 中移除键盘焦点后,该快捷方式才起作用。您可以通过将Qt::WidgetWithChildrenShortcut 或 Qt::ApplicationShortcut传递给QShortcut::setContext方法来更改此行为。