作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
需要一些快速帮助,因为我可能错过了在 Qt 中解决这种情况的技巧(我使用最新的 Qt 4)。
在我的 QMdiArea 中,我创建了几个子窗口。所有子窗口都附有默认系统菜单(最小化、最大化、停留在顶部、关闭... - 右键单击子窗口图标时可以看到)。
为了与我在我的应用程序主菜单中定义的一致(ctrl+w 关闭窗口可见),我不能接受显示的与关闭相关的快捷方式是 Ctrl在子窗口的系统菜单中 +F4。 必须是 Ctrl+w。我尝试了不同的方法,包括为应用程序设置全局快捷方式(使用 setShortcutContext)...但没有成功。
关闭默认有两个快捷键:Ctrl+w 和Ctrl+F4。我希望两者都能继续工作,但应该始终显示的是 Ctrl+w。
目前,我看到的唯一解决方案是替换系统菜单(一个 QMenu)...但是对于这样一个简单的任务来说,这似乎是很多代码!
最佳答案
你可以试试这样设置:
ui->mdiArea->subWindowList().at(index)->systemMenu()->actions().last()->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_W));
请用合适的索引替换“索引”。它对我有用。 (更新:这不起作用,CTRL+W 已经是关闭操作的指定快捷方式)
更新:
关闭操作有两个分配的快捷方式,第一个显示在菜单中。如果你交换顺序,你会得到 CTRL+W 显示。
QList<QKeySequence> closeShorcuts = ui->mdiArea->subWindowList().at(0)->systemMenu()->actions().last()->shortcuts();
closeShorcuts.swap(0, 1);
ui->mdiArea->subWindowList().at(0)->systemMenu()->actions().last()->setShortcuts(closeShorcuts);
请注意,此源代码中没有平台检查;如果你在 MAC 上运行它你会得到相反的结果,在 X11 中它会超出列表边界(因为只有一个快捷方式:CTRL+W) .
关于Qt:如何在子窗口的默认系统菜单中显示Ctrl+W而不是Ctrl+F4?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7687821/
我是一名优秀的程序员,十分优秀!