qt类似于qq托盘图标闪烁的消息提示
2013-12-05 15:42
381 查看
qt类似于qq托盘图标闪烁的消息提示
times=new QTimer (this);times->setSingleShot(false);//true 表示循环一次 表示循环无数次
times->setInterval(650);
connect(times,SIGNAL(timeout()),this,SLOT(changeico()));
void MainWindow::timeico()
{
m=0;
times->start();
}
void MainWindow::changeico()//这里我们让其闪烁二十次
{
m++;
if(m==20)
{
times->stop();
}
if(m%2==0)
{
iTrayIcon->setIcon( QIcon(":/images/monter.png") );
}
else
{
iTrayIcon->setIcon( QIcon() );
}
}
void MainWindow::Maction(QSystemTrayIcon::ActivationReason wch)
{
switch(wch)
{
case QSystemTrayIcon::Trigger: times->stop();
iTrayIcon->setIcon( QIcon(":/images/monter.png") );break;//当用户单击时 我们让图标停止闪烁
default:;
}
}
QIcon icon = QIcon(":/images/icon.ico");加载图片
setWindowIcon(icon);把图片设置到窗口上
trayIcon = new QSystemTrayIcon(this);创建一个系统托盘图标
trayIcon->setIcon(icon);//设置图标
trayIcon->setToolTip("a trayicon example");//设置提示语
trayIcon->show();
setMinimumSize(200,100);窗口最大化和最小化一样大小。所以窗口不能放大也不能缩小
setMaximumSize(200,100);
QApplication::setQuitOnLastWindowClosed(false);//Quit On Last Window Closed退出在最后窗口关闭点击关闭时程序不关闭
在 系统托盘图标中,当图标activated(激活)时应该做好相应的处理,它会触发QSystemTrayIcon::ActivationReason 信号,信号可能是单击(触发(Trigger))、双击(DoubleClick)时应该用switch来接收处理,例如:
void class(QSystemTrayIcon::ActivationReason reason){
switch (reason) {
case QSystemTrayIcon::Trigger:
添加自己处理
break;
case QSystemTrayIcon::DoubleClick:
添加自己处理
break;
case QSystemTrayIcon::MiddleClick:
添加自己处理
break;
default:
}
}
设置系统托盘图标是常用到以下以个:
QIcon(":/images/icon.ico")//加载ico图片或是
QIcon(":/images/heart.svg")//加载svg图片
QSystemTrayIcon->setIcon(QIcon icon);//定义一个系统托盘图标并设置图标
setWindowIcon(icon);//设置窗口图标
QSystemTrayIcon->setToolTip(string);//定义一个系统托盘图标并设置图标的提示语
有时还需要在图标上设置菜单。如下:
void Window::createActions()
{
minimizeAction = new QAction(tr("最小化"), this);
connect(minimizeAction, SIGNAL(triggered()), this, SLOT(hide()));//若是触发了最小化就隐藏窗口
maximizeAction = new QAction(tr("最大化"), this);
connect(maximizeAction, SIGNAL(triggered()), this, SLOT(showMaximized()));//若触发了最大化就最大化窗口
restoreAction = new QAction(tr("还原"), this);
connect(restoreAction, SIGNAL(triggered()), this, SLOT(showNormal()));//若触发了还原就正常显示
quitAction = new QAction(tr("退出"), this);
connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));//若触发了退出就退出程序
}
void Window::createTrayIcon()//创建托盘图标
{
trayIconMenu = new QMenu(this);//菜单
trayIconMenu->addAction(minimizeAction);//把最小化加入到菜单项
trayIconMenu->addAction(maximizeAction);//把最大化加入到菜单项
trayIconMenu->addAction(restoreAction);//把还原加扩到菜单项
//trayIconMenu->addSeparator();//加入一个分离符
trayIconMenu->addAction(quitAction);//把退出加到入菜单项
trayIcon = new QSystemTrayIcon(this);//创建一托盘图标
trayIcon->setContextMenu(trayIconMenu);//设置托盘上下文菜单为trayIconMenu
}
当你不想把你的图标显示出来而程序正常运行,那么就要设置是否可见(setEnabled):
如下:
qidget::setEnabled(bool)
相关文章推荐
- qt类似于qq托盘图标闪烁的消息提示 (胡峰原创,代码已经过测试运行)
- qt类似于qq托盘图标闪烁的消息提示
- Flex AIR 做一个类似QQ消息提示在系统托盘闪烁图标
- 消息提醒、带声音提示、托盘图标闪烁
- 在状态栏上显示会闪烁的图标(类似qq消息提示)
- Winform托盘NotifyIcon使用(类似QQ消息提示)
- Winform托盘NotifyIcon使用(类似QQ消息提示)
- 类似QQ消息提示的任务栏窗口图标的高亮显示方法
- 用Javascript作消息提示框(类似于QQ用户上线的消息提示)
- windows程序托盘图标以及消息提示--示例程序
- 对tabcontrol控件增强,添加关闭按钮功能、呼吸灯标签闪烁功能、类QQ消息数量标签提示TIP
- Qt5 实现程序图标以及动态托盘闪烁图标
- 用Javascript作消息提示框(类似于QQ用户上线的消息提示)
- windows程序托盘图标以及消息提示--基本知识(NOTIFYICONDATA)
- Android自定义类似于QQ的消息提示框
- windows程序托盘图标以及消息提示--基本知识(NOTIFYICONDATA)
- 用Javascript作消息提示框(类似于QQ用户上线的消息提示)
- windows程序托盘图标以及消息提示--基本知识(Shell_NotifyIcon)
- [工具]类QQ消息通知,提示博客园发布新文章(二)——托盘实现
- windows程序托盘图标以及消息提示--基本知识(Shell_NotifyIcon)