在使用QSS美化右键菜单的时候,遇到了很多细节上的问题,在网上查不到这些细节解决方法,甚是头疼,
不改好自己心里又不爽,好在自己的查查改改最终解决了。我看别人的代码的时候最喜欢看图,不然没有兴趣。上效果:
遇到的问题:
1、使用setStyleSheet()函数设置QSS文件的时候,出现了二级菜单没有效果,如图中的排序菜单。解决方法:
通过不断的测试,最终使用qApp(包含头文件)来设置效果就显示出来了,qApp->setStyleSheet(Qss文件)。
2、在创建菜单分隔线时,只是分割文字那部分,图片那边没有分隔到,为了这个在网上查找了好久都没有找到,浪费了很多时间,头疼,后来发现可以在QSS中更改QMenu::separator的背景颜色background-color,就显示了,是因为addSeparator本就分两部分的,一部分是图片,另一部分是横线。
3、上图菜单中有两处子菜单,但是两处子菜单的显示间距不一样,所以需要各自设置,但是使用QMenu#menuSort对象选择器设置没有效果。**解决方法:**比如你的子菜单对象是menuSort,那么就直接使用menuSort->setStyleSheet()函数来设置不同子菜单的样式。
以上虽然简单,但是对于我这个新手来说,还是浪费了一些时间去查找和解决问题。方便就给个关注!放入gif图看看效果,按键的icon图片是自己抠酷狗的不知道怎么放上去。
20221116_181425
头文件
#include <QMenu>
class MListMenu : public QMenu
{
Q_OBJECT
public:
explicit MListMenu(QWidget *parent = nullptr);
signals:
public slots:
private:
QMenu *menu_addsong;
QMenu *menuSort;
QAction *shareAct;
QAction *act_delplayList;
};
实现文件
#include "mlistmenu.h"
#include <QDebug>
#include <QActionEvent>
MListMenu::MListMenu(QWidget *parent) : QMenu(parent)
,menu_addsong(nullptr)
{
QAction *act_addplaylist=new QAction("新建列表");
menu_addsong=new QMenu("添加歌曲");
menu_addsong->addAction("添加本地歌曲...");
menu_addsong->addAction("添加本地歌曲文件夹...");
act_delplayList=new QAction(QIcon(":/images/btn_del (3).png"),"删除列表");
QAction *act_reName=new QAction("重命名");
QAction* act_emptyList=new QAction("清空列表");
menuSort = new QMen