但行好事,莫问前程

QSystemTrayIcon

QSystemTrayIcon

系统托盘,属性主要是提示,是否可见

属性设置
函数 描述
void setContextMenu(QMenu *menu) 提示的菜单
void setIcon(const QIcon &icon) 图标
void setToolTip(const QString &tip) 提示的内容
slots
函数 描述
void hide() 隐藏
void setVisible(bool visible) 可见性
void show() 显示
void showMessage(const QString &title, const QString &message, QSystemTrayIcon::MessageIcon icon = QSystemTrayIcon::Information, int millisecondsTimeoutHint = 10000) 显示的消息
void showMessage(const QString &title, const QString &message, const QIcon &icon, int millisecondsTimeoutHint = 10000)
signal
void    activated(QSystemTrayIcon::ActivationReason reason)
void    messageClicked()
枚举
激活原因 描述
QSystemTrayIcon::Unknown 0 Unknown reason
QSystemTrayIcon::Context 1 The context menu for the system tray entry was requested
QSystemTrayIcon::DoubleClick 2 The system tray entry was double clicked.
QSystemTrayIcon::Trigger 3 The system tray entry was clicked
消息图标 Value Description
QSystemTrayIcon::NoIcon 0 No icon is shown.
QSystemTrayIcon::Information 1 An information icon is shown.
QSystemTrayIcon::Warning 2 A standard warning icon is shown.
QSystemTrayIcon::Critical 3 A critical warning icon is shown.
小例子

鼠标放在上面的提示
<code>右键显示的菜单</code>

/*
 * 系统托盘
 * 可以显示小菜单,提示内容,信息
 * showmessage看用户的配置等,有时候根本不会出现
*/
mywidget::mywidget()
{
    setWindowTitle("my widget test");
    QVBoxLayout *layout=new QVBoxLayout(this);

    QMenu *pmenu=new QMenu;
    for(int i=0;i<5;i++)
    {
        QAction *Pacton=new QAction;
        Pacton->setIcon(QIcon(":/image/hz"+QString::number(i+1,10)+".jpg"));
        Pacton->setText("菜单"+QString::number(i+1,10));
        pmenu->addAction(Pacton);
    }
    QSystemTrayIcon *psystray=new QSystemTrayIcon(this);
    psystray->setContextMenu(pmenu);                        //set menu
    psystray->setIcon(QIcon(":/image/wz2.jpg"));            //set icon
    psystray->setToolTip("i`m systemtray ,don`t click me!");//set tip

    connect(psystray ,QOverload<QSystemTrayIcon::ActivationReason>::of(&QSystemTrayIcon::activated),
            [&psystray](QSystemTrayIcon::ActivationReason reason){
        switch(reason)
        {
            case QSystemTrayIcon::Trigger:
            {
                qDebug()<<"hello the world";
                psystray->showMessage("标题","内容",QSystemTrayIcon::Information);//有些系统根本不会出现,看配置和用户设置
                break;
            }
            case QSystemTrayIcon::Context:
            {
                break;
            }
            case QSystemTrayIcon::DoubleClick:
            {
                qDebug()<<"double click";
                break;
            }
        }
    });
    psystray->setVisible(true);
    psystray->show();


}
posted @ 2018-08-10 09:52  专业路过  阅读(568)  评论(0编辑  收藏  举报