【问题标题】:Get system (context) menu获取系统(上下文)菜单
【发布时间】:2020-09-28 12:40:24
【问题描述】:

我用Qt::FramelessWindowHint自定义了窗口框架和窗口标题栏等。 但是我现在缺少系统菜单(右键单击应用程序图标或任务栏中的应用程序名称等时会得到)。 如何获取系统菜单并显示它? 我正在研究 linux c++/Qt

【问题讨论】:

  • 您想为您的应用提供上下文菜单吗?这是你的问题吗?
  • 是的。但我想要系统默认上下文菜单。

标签: c++ qt c++11 qt5


【解决方案1】:

您可以创建自己的上下文菜单,使其类似于系统上下文菜单

只需使用.qrc 文件添加.css 文件与您的风格(如系统上下文菜单)。

样式示例:

 QMenu::item
 {
     background-color: rgb(0, 170, 0);
     color: rgb(255, 255, 255);
 }

 QMenu::item:selected
 {
    background-color: rgb(0, 85, 127);
    color: rgb(255, 255, 255);
 } 

你可以通过 setStyleSheet() 方法而不用 .qrc 文件:

QString  menuStyle(
           "QMenu::item{"
           "background-color: rgb(0, 170, 0);"
           "color: rgb(255, 255, 255);"
           "}"
           "QMenu::item:selected{"
           "background-color: rgb(0, 85, 127);"
           "color: rgb(255, 255, 255);"
           "}"
        );

  this->setStyleSheet(menuStyle);

如何创建上下文菜单示例:https://evileg.com/en/post/76/

【讨论】:

  • 感谢您的回答,但我想拥有系统默认上下文菜单以及我应该如何实现操作“在 linux 中向右移动工作区”。
  • 但是“系统默认 CM”是什么意思,没有这样的东西......每个应用程序都根据他们想要提供给工具用户的内容定义自己的上下文菜单......
  • 请参见上图。我想要同样的,但我的自定义标题栏。
  • @ArmenGishyan 您问题中显示的菜单是正在使用的窗口管理器的属性,与Linux本身无关。对于“向右移动工作区”等操作也是如此。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-07
  • 1970-01-01
  • 1970-01-01
  • 2021-07-11
  • 2016-10-04
相关资源
最近更新 更多