QT 对按钮添加菜单功能实现

对按钮设置菜单只需使用setMenu函数即可。

实现代码:

m_pAddMenuPB = new QPushButton;
m_pAddMenu = new QMenu;
QAction *upload = new QAction(QIcon(":/map/upload.png"),"上传文件",this);
QAction *createDir = new QAction(QIcon(":/map/createdir.png"),"创建文件夹",this);
m_pAddMenu->addAction(upload);
m_pAddMenu->addAction(createDir);
m_pAddMenuPB->setMenu(m_pAddMenu);
m_pAddMenuPB->setFixedSize(40,40);
m_pFlushFilePB = new QPushButton;
m_pFlushFilePB->setFixedSize(40,40);

QAction是一个类,它的功能是等待指令,执行工作。那么这个指令怎么来呢?比如菜单项、工具栏内按钮,用户在点击这些选项或按钮时,Qt得到反馈,执行指定功能。

QAction函数原型为:

explicit QAction(QObject *parent = nullptr);
explicit QAction(const QString &text, QObject *parent = nullptr);
explicit QAction(const QIcon &icon, const QString &text, QObject *parent = nullptr);

取消菜单右边的小箭头:

mybtn->setStyleSheet("QPushButton::menu-indicator{image:none}");

连接槽函数:

connect(upload, &QAction::triggered, this, &Book::uploadFile);
connect(createDir,&QAction::triggered, this, &Book::createDir);

附上一段QMenu QSS代码:

QMenu{
color:#386487;
background-color:#DEF0FE;
margin:2px;
}

QMenu::item{
padding:3px 20px 3px 20px;
}

QMenu::indicator{
width:13px;
height:13px;
}

QMenu::item:selected{
color:#386487;
border:0px solid #C0DCF2;
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #DEF0FE,stop:1 #C0DEF6);
}

QMenu::separator{
height:1px;
background:#C0DCF2;
}

你可能感兴趣的:(qt,开发语言)