我正在尝试使用一些在QT中不具有交互性的项目来构建菜单.我在MyCustomMenuClass中继承了QMenu.我正在尝试将节标题添加到菜单中,以便用户更清楚.
例如,它应该如下所示:
My section 1 title Action 1 Action 2 Action 3 My second section title Action 4 Action 5
问题是部分标题总是对鼠标做出反应,但我希望它们不会对鼠标作出反应,以使其更漂亮.有什么想法怎么做?
解决方法
从QMenu文档:
There are four kinds of action items: separators,actions that show a submenu,widgets,and actions that perform an action. Separators are inserted with addSeparator(),submenus with addMenu(),and all other items are considered action items.
铃响了:小部件!您可以在菜单中添加小部件吗?这意味着你已经安定下来,你可以随心所欲.
你需要的是一个QWidgetAction对象.它允许您将自定义窗口小部件作为操作插入.您的标题将是自定义小部件.如果你只需要一个标题,那么QLabel就足够了:
QMenu* myMenu = new QMenu(...); QLabel* label = new QLabel(tr("<b>Title</b>"),this); label->setAlignment(Qt::AlignCenter); QWidgetAction* a = new QWidgetAction(myMenu); a->setDefaultWidget(label);
有关更复杂的示例代码,请参阅此相关问题:Is there a way to add a Widget to a QMenu in QtCreator