1
A
回答
2
不能使用Qt,因为它是操作系统特定的做到这一点。但是,您可以在Windows中使用GetSystemMenu和AppendMenu函数修改菜单,然后捕获单击项目的事件。
下面是一个简单的例子here。它附加了一个分隔符和一个关于项目的菜单:
#include "windows.h"
// IDM_ABOUTBOX must be in the system command range
// (IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX)
// and (IDM_ABOUTBOX < 0xF000)
#define IDM_ABOUTBOX 0x0010
MyWidget::MyWidget() : QMainWindow()
{
...
HMENU hMenu = ::GetSystemMenu(winId(), FALSE);
if (hMenu != NULL)
{
::AppendMenuA(hMenu, MF_SEPARATOR, 0, 0);
::AppendMenuA(hMenu, MF_STRING, IDM_ABOUTBOX, "About MyApp...");
}
...
}
bool MyWidget::winEvent(MSG *m, long *result)
{
if (m->message == WM_SYSCOMMAND)
{
if ((m->wParam & 0xfff0) == IDM_ABOUTBOX)
{
*result = 0;
// open About dialog
about();
return (true);
}
}
return (false);
}
PRO-file:
LIBS += -lUser32
相关问题
- 1. 如何将自定义项添加到C++的系统菜单中?
- 2. 如何自定义窗口菜单(Linux操作系统Ubuntu)
- 3. Excel VBA - 将子菜单添加到自定义右键菜单
- 4. 将自定义菜单项添加到WordPress菜单
- 5. Wordpress将子菜单添加到自定义菜单
- 6. 将自定义菜单项添加到Finder上下文菜单
- 7. 如何将自定义菜单项添加到X下的窗口系统菜单?
- 8. Cosmos自定义操作系统,addmapping?
- 9. 自定义Android操作系统构建
- 10. 如何将自定义操作系统移植到EC2?
- 11. 将python解释器移植到自定义操作系统
- 12. 将自定义选项添加到wordpress中的菜单项
- 13. 将自定义请求添加到XML中的joomla菜单项
- 14. 将数据添加到TinyMCE中的自定义菜单按钮
- 15. 将自定义元素添加到Joomla中的主菜单项
- 16. 将自定义菜单项添加到角度ui网格中的列菜单
- 17. 将自定义选项添加到Wordpress菜单管理器中的菜单项
- 18. GWT将动态菜单项添加到自定义生成的菜单中
- 19. 无法将itertools.so添加到操作系统的路径中
- 20. 将自定义文件系统支持添加到Apache VFS
- 21. 将自定义方法添加到系统类
- 22. 将自定义常量添加到系统常量
- 23. 将自定义属性添加到系统类
- 24. 将自定义首选项添加到系统设置
- 25. 1Password样式自定义操作菜单
- 26. 自定义树莓派操作系统文件系统
- 27. 预定义为iPhone操作系统和Mac操作系统
- 28. 在Wix中添加系统变量后执行自定义操作
- 29. 不能添加更多菜单到wordpress自定义菜单
- 30. 添加自定义菜单项的DataGrid
感谢您的回复。让我试试看。 – Bharath 2014-09-08 12:01:47
提供的解决方案有效,但有以下更改。 'QE中不支持'winEvent',它被'QWidget :: nativeEvent'取代。参见[QWidget :: nativeEvent()](http://qt-project.org/doc/qt-5/qwidget的.html#nativeEvent)。 其他一切保持不变。 再次感谢。 – Bharath 2014-09-08 12:42:17
谢谢,这有很大的帮助。对于其他人,我可以添加:winEvent现在是nativeEvent(const QByteArray&eventType,void * m,long * result),并且您需要使用MSG投射m * msg = reinterpret_cast(m); –
jaba
2017-09-29 15:03:30