qt QSs 中QMenu
时间: 2024-03-15 20:36:09 浏览: 184
QSS是Qt Style Sheets的缩写,是一种用于自定义Qt界面的样式表语言。在QSS中,可以使用子控件设置样式来自定义QMenu的各个项目。常见的QMenu子控件包括item、indicator、separator、right-arrow、left-arrow、scroller和tearoff。通过使用QWidgetAction和自定义QWidget,可以实现鼠标滑过菜单项图标高亮显示,并使用qss动态属性进行菜单项的样式定制。请参考如下样式表和代码:
样式表:
```
QMenu::item:hover {
background-color: #ff0000;
color: #ffffff;
}
QMenu::indicator {
image: url(icon.png);
}
QMenu::separator {
height: 2px;
background-color: #000000;
}
QMenu::right-arrow {
image: url(right_arrow.png);
}
QMenu::left-arrow {
image: url(left_arrow.png);
}
QMenu::scroller {
background-color: #cccccc;
}
QMenu::tearoff {
image: url(tearoff.png);
}
```
代码示例:
```cpp
QMenu *menu = new QMenu();
QAction *action1 = new QAction("Item 1", menu);
QAction *action2 = new QAction("Item 2", menu);
QAction *action3 = new QAction("Item 3", menu);
menu->addAction(action1);
menu->addAction(action2);
menu->addAction(action3);
QWidgetAction *widgetAction = new QWidgetAction(menu);
CustomWidget *customWidget = new CustomWidget();
widgetAction->setDefaultWidget(customWidget);
menu->addAction(widgetAction);
menu->setStyleSheet("QMenu::item:hover { background-color: #ff0000; color: #ffffff; }");
menu->popup(QCursor::pos());
```
阅读全文