QQ之状态栏

1、直接使用 m_pBtn->setMenu(m_pMenu); 这样会在按键右侧形成一个三角符号,需要在样式表内设置 image:none;  来取消

2、先创建好状态菜单(不显示),然后用连接来连接按键与菜单的显示方法,这样就不用setMenu然后再去取消三角符号。

.H

#ifndef BTN_MENU_H
#ifndef BTN_MENU_H#define BTN_MENU_H
 
 
#include <QWidget>
#include <QPushButton>
#include <QMenu>
 
 
class Btn_Menu : public QWidget
{
    Q_OBJECT
public:
    explicit Btn_Menu(QWidget *parent = 0);
 
 
signals:
 
 
public slots:
    void show_Menu();
    void busyProc();
    void hideProc();
    void awayProc();
    void onlineProc();
    void QmeProc();
    void notdistrubProc();
private:
void createBtn_Menu();
private:
 
 
    QPushButton *m_pMenuBtn;
    QMenu *m_pBtnMenu;
 
 
};
 
 
#endif // BTN_MENU_H

.cpp

#include "btn_menu.h"
Btn_Menu::Btn_Menu(QWidget *parent) : QWidget(parent),m_pMenuBtn(0),m_pBtnMenu(0)
{
    this->resize(200,120);
    m_pMenuBtn = new QPushButton(this);
    m_pMenuBtn->setFixedSize(13,13);
    m_pMenuBtn->setIcon(QIcon("Resources/LoginState/state_away.png"));
    createBtn_Menu();
    connect(m_pMenuBtn,SIGNAL(clicked()),this,SLOT(show_Menu()));
}
void Btn_Menu::createBtn_Menu()
{   //只创建不显示,需要的时候调用显示方法
    m_pBtnMenu = new QMenu(this);
    QAction *t_pAction1 = new QAction(QIcon("Resources/LoginState/state_away.png"),"离开",this);
    m_pBtnMenu->addAction(t_pAction1);
    QAction *t_pAction2 = new QAction(QIcon("Resources/LoginState/state_busy.png"),"繁忙",this);
    m_pBtnMenu->addAction(t_pAction2);
    QAction *t_pAction3 = new QAction(QIcon("Resources/LoginState/state_hide.png.pn"),"隐藏",this);
    m_pBtnMenu->addAction(t_pAction3);
    QAction *t_pAction4 = new QAction(QIcon("Resources/LoginState/state_notdisturb.png"),"请勿打扰",this);
    m_pBtnMenu->addAction(t_pAction4);
    QAction *t_pAction5 = new QAction(QIcon("Resources/LoginState/state_online.png"),"在线",this);
    m_pBtnMenu->addAction(t_pAction5);
    QAction *t_pAction6 = new QAction(QIcon("Resources/LoginState/state_Qme.png"),"Qme",this);
    m_pBtnMenu->addAction(t_pAction6);//非全局的只能在此处链接,是全局的话可以在外链接
    connect(t_pAction1,SIGNAL(triggered(bool)),this,SLOT(awayProc()));
    connect(t_pAction2,SIGNAL(triggered(bool)),this,SLOT(busyProc()));
    connect(t_pAction3,SIGNAL(triggered(bool)),this,SLOT(hideProc()));
    connect(t_pAction4,SIGNAL(triggered(bool)),this,SLOT(notdistrubProc()));
    connect(t_pAction5,SIGNAL(triggered(bool)),this,SLOT(onlineProc()));
    connect(t_pAction6,SIGNAL(triggered(bool)),this,SLOT(QmeProc()));
}
void Btn_Menu::show_Menu()
{

    m_pBtnMenu->show();
    m_pBtnMenu->exec(QCursor::pos());
}
void Btn_Menu::busyProc()
{
    m_pMenuBtn->setIcon(QIcon("Resources/LoginState/state_busy.png"));
}
 
 
void Btn_Menu::hideProc()
{
    m_pMenuBtn->setIcon(QIcon("Resources/LoginState/state_hide.png"));
}
 
 
void Btn_Menu::awayProc()
{
    m_pMenuBtn->setIcon(QIcon("Resources/LoginState/state_away.png"));
}
 
 
void Btn_Menu::onlineProc()
{
    m_pMenuBtn->setIcon(QIcon("Resources/LoginState/state_online.png"));
}
 
 
void Btn_Menu::QmeProc()
{
    m_pMenuBtn->setIcon(QIcon("Resources/LoginState/state_Qme.png"));
}
 
 
void Btn_Menu::notdistrubProc()
{
    m_pMenuBtn->setIcon(QIcon("Resources/LoginState/state_notdisturb.png"));
}


猜你喜欢

转载自blog.csdn.net/qq_42100881/article/details/80214132