• paip.提升用户体验c++ Qt5 实现程序图标以及动态托盘闪烁图标


    paip.提升用户体验------c++ Qt5 实现程序图标以及动态托盘闪烁图标


    作者Attilax ,  EMAIL:1466519819@qq.com 
    来源:attilax的专栏
    地址:http://blog.csdn.net/attilax


    1.应用程序图标:  
    ----------------------------
    RC_ICONS = default.ico  .默认路径是项目path..会编译到个exe黑头..




    2.系统托盘图标:
    -------------------------
     #include <QtGui>
     #include <QSystemTrayIcon>
    下列的代码放的个构造函数黑头..
      //c923  style tyay icon
     pannelIcon = new QSystemTrayIcon(this);
    pannelIcon->setIcon(QIcon("tray.ico"));
    pannelIcon->show();
    pannelIcon-> setToolTip("tray tip c923");
            //设置托盘图标的提示信息


    不过.会发现显示不出来.主要十路径问题..tray.ico的路径.


     跟踪查看进程工作路径working directory
     -------------------------------------------------------
     processexporlere , ritkey>prroper> image >curr dir  >>  视图当前working directory.. 发现到个build路径..
     要更改路径到个qtc2.8的.>>projects> build & run >>run settting >>run working derictory ....不过一般不需要更改这个.
     加个run step,让qtc 运行的之前不个 *.ico复制到个build路径.走OK兰..
     command: cmd.exe
     arguments:  /c copy %{sourceDir}\*.ico  %{buildDir}
     working dericetory: %{buildDir} (default)
     
     路径要用反斜杠了..用斜杠错误.
      D:\qtworkspace\atiqtc9/tray.ico  D:\qtworkspace\build-atiqtc9-deskc9-Debug   // 命令语法不正确。 注意
      copy D:\qtworkspace\atiqtc9\tray.ico  D:\qtworkspace\build-atiqtc9-deskc9-Debug
      查看cqt变量内容
     -----------------------
     直接输入类k上面走出来兰..

    3.动态托盘闪烁图标:
    ----------------------------
    这个走要用timer实现兰..不过比较的时候发现.   
      QSystemTrayIcon->icon();  //  if(   &QSystemTrayIcon_cur==&ico_a)    地址不一样,日怪兰..只好用个int变量来标示.
      
     源码主要下列的:
     ------h文件加个slot 声明
     
     private slots:
     
        //c923 flashicon timer
        void dosomethings();
        c923

    -----cpp

    #include <QtGui>
     #include <QSystemTrayIcon>
    #include <QTimer>
    //c923  style tyay icon
    QSystemTrayIcon* pannelIcon ;
    //c923 //timer  flash icon
    QIcon ico_a;
    QIcon ico_b;
    int curIcon=0;
    ///c923


    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
       this->setAcceptDrops(true);
        //setAcceptDrops(true); // [[1]]: 使label可接受拖放操作


        //c923  style tyay icon
     pannelIcon = new QSystemTrayIcon(this);
    pannelIcon->setIcon(QIcon("tray.ico"));
    pannelIcon->show();
    pannelIcon-> setToolTip("tray tip c923");
            //设置托盘图标的提示信息


    //void show() //该函数适用于显示托盘图标的函数


    //void showMessage(const QString & title, const QString & message,...)
    //timer  flash icon
    ico_a =QIcon("tray.ico");
    ico_b=QIcon("default.ico");
    QTimer* timer=new QTimer(this);


        connect(timer,SIGNAL(timeout()),this,SLOT(dosomethings()));
        timer->start(400);


    c923
    }


    //c923 //timer  flash icon


    void MainWindow::dosomethings()
    {
        qDebug() << "---timer event start--";
        //do something  qDebug() << filename;
        QIcon qi=pannelIcon->icon();
      //  if(   &qi==&ico_a)
        if(curIcon==0)
        {
            pannelIcon->setIcon(ico_b);
        curIcon=1;
        }
        else
        {curIcon=0;
            pannelIcon->setIcon(ico_a);
        }
        pannelIcon->show();
        
        //    emit outlogtext("abc");
    }
    c923


     


     
     
     参考:
     C++用new来创建对象和非new来创建对象的区别 - GOD_YCA - 博客园.htm
     在Qt Creator2.3中 qmake 建立 时设置自己的 环境变量! - jtop0的专栏 - 博客频道 - CSDN.NET.htm
     Qt5:QSystemTrayIcon类实现程序托盘图标 - wowk - 博客园.htm
     dist changes-2.2.0 in qt-creator qt-creator master - Qt by Digia.htm
     Qt中timer使用 - 懒人的技术笔记 - 博客频道 - CSDN.NET.htm
     Qt 定时器Timer使用 - PY4NT的日志 - 网易博客.htm

  • 相关阅读:
    .NET中操作SQLite
    Visual Studio 快捷键
    ADO.NET入门教程(三) 连接字符串,你小觑了吗?
    ADO.NET入门教程(二)了解.NET数据提供程序
    Xaml语法概述及属性介绍
    Csharp日常笔记
    C#基础
    PAT-L3-球队“食物链”-dfs-状压-set
    TOJ1302: 简单计算器 && TOJ 4873: 表达式求值&&TOJ3231: 表达式求值
    TOJ 3973 Maze Again && TOJ 3128 简单版贪吃蛇
  • 原文地址:https://www.cnblogs.com/attilax/p/15199533.html
Copyright © 2020-2023  润新知