关闭

Qt系统托盘程序

913人阅读 评论(0) 收藏 举报
分类:

1:首先在程序的main函数中添加:

void main()

{

QApplication a(argc, argv); 


if ( !QSystemTrayIcon::isSystemTrayAvailable() ) 

              MessageBoxQt(“没有检测到系统托盘”);

return 1;

}


QApplication::setQuitOnLastWindowClosed(false);


            。。。

}


2:在指定窗口中(一般是主窗口),添加相应代码:



class trayWindow : public QMainWindow

{

public slots:

void slot_create_tray() //创建系统托盘;
{
createActions();  
createTrayIcon();
 
connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
this, SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));


QIcon icon("G:\\t.png");
trayIcon->setIcon(icon);  //设置托盘图标;
 
trayIcon->show(); //显示托盘;
}




public:
QAction *minimizeAction;
QAction *maximizeAction;
QAction *restoreAction;
QAction *quitAction;


QSystemTrayIcon *trayIcon;
QMenu *trayIconMenu; 
 

void createActions()  //创建添加菜单QAction;
{
minimizeAction = new QAction(tr("Mi&nimize"), this);
connect(minimizeAction, SIGNAL(triggered()), this, SLOT(hide()));


maximizeAction = new QAction(tr("Ma&ximize"), this);
connect(maximizeAction, SIGNAL(triggered()), this, SLOT(showMaximized()));


restoreAction = new QAction(tr("&Restore"), this);
connect(restoreAction, SIGNAL(triggered()), this, SLOT(showNormal()));


quitAction = new QAction(tr("&Quit"), this);
connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit())); 
}


void 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);
}


public slots:
void iconActivated(QSystemTrayIcon::ActivationReason reason) //托盘图标响应鼠标消息
{
switch (reason) 
{
case QSystemTrayIcon::Trigger:
case QSystemTrayIcon::DoubleClick:
break;
case QSystemTrayIcon::MiddleClick:
break;
default:
;
}
}


}


通过上述方法就可以制作一个简单的托盘应用程序; 

这里简单讲托盘程序的编写过程将清楚;

如果想查看更多托盘程序应用,可以参考Qt安装包中的例子: Qt\Qt5.1.1\5.1.1\msvc2010\examples\widgets\desktop\systray ;

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

QT5.0及其以上版本,<QApplication>出错的原因

从新学习Qt时,重装了Qt5.4,当运行Hello World例子时,遇到了下列的情况   span style="font-size:18px;">#include QApplication> #include QDialog> #include Q...
  • tiancaihang
  • tiancaihang
  • 2015-12-04 22:52
  • 940

Qt 主函数中qapplication的exec()过程

无意中发现一篇博客讲了QT事件源代码,看了半天看不懂,所以就加一下注释再理解一下 (1)第一步: int main(int argc, char *argv[])   {       QApplication a(argc, argv);  ...
  • jiaoyaziyang
  • jiaoyaziyang
  • 2015-11-10 21:39
  • 3700

QT QApplication初始化是怎样的呢?

QApplication代表着QT Embedded应用程序的运行时对象,类似于MFC的CWinApp。应用程序可以通过一个全局指针变量qApp表访问当前应用程序的QApplication。       1.QApplication的初始...
  • u013617438
  • u013617438
  • 2014-03-24 14:25
  • 645

QApplication 和事件循环

QApplication 和事件循环观察者模式 在编写事件驱动的程序中,GUI 视图需要对数据模型对象的的状态变化做出响应,以便它们可以显示最先的消息。当任何数据模型对象发生状态改变时,就需要一种间接的方式来提醒观察者。观察者就是一些正在监听(并响应)状态变化的对象。使用这种消息传递机制的设计模式...
  • u012365926
  • u012365926
  • 2017-02-09 16:40
  • 278

Qt界面编程积累

1.QTextEdit类成员函数中包含了用于文本查找的成员函数,可用于“查找”对话框的设计: bool QTextEdit::find(const QString & exp, QTextDocument::FindFlags options = 0) Finds the next occu...
  • u011519892
  • u011519892
  • 2013-11-28 23:34
  • 958

Qt 如何处理密集型耗时的事情(频繁调用QApplication::processEvents)

有时候需要处理一些跟界面无关的但非常耗时的事情,这些事情跟界面在同一个线程中,由于时间太长,导致界面无法响应,处于“假死”状态。例如:在应用程序中保存文件到硬盘上,从开始保存直到文件保存完毕,程序不响应用户的任何操作,窗口也不会重新绘制,从而处于“无法响应”状态,这是一个非常糟糕的体验 。 ...
  • u012260238
  • u012260238
  • 2017-03-03 21:24
  • 508

事件事件事件

动态库  拷贝过去 L l 静态库能包进去 在Qt中,事件被封装成一个个对象,所有的事件均继承自抽象类QEvent.  接下来依次谈谈Qt中有谁来产生、分发、接受和处理事件: 1、谁来产生事件: 最容易想到的是我们的输入设备,比如键盘、鼠标产生的 keyPr...
  • lusic01
  • lusic01
  • 2018-01-03 17:58
  • 39

Qt语言动态切换

Qt的国际化设计提供了这种可能。要实现这种动态切换,只需要在程序里使用一点小小的技巧,就是把调用了Qt翻译语句tr的代码集中在某个和窗体变化无关的函数里 ,比如 retranslateStrings() 这样的函数里。在改变语言的时候,调用这 个函数就可以了。
  • SBADHWM
  • SBADHWM
  • 2014-10-09 11:15
  • 1206

QT创建主窗口

上次我们安装好了整个QT的环境,这次我们开始编写代码。程序呢都是现成的,从http://doc.qt.nokia.com/4.7/widgets-tutorial.html这里可以找到,都是官方的教程,例程,我只是拿来练练手。 在QT Creator里创建的是qt的空白工程,没有自动包含什么类的头...
  • xiegenwendada
  • xiegenwendada
  • 2013-01-22 19:37
  • 529

为什么qt种提示找不到#include <QApplication>

转载自:http://www.cnblogs.com/nowornever-L/p/5665945.html从新学习Qt时,重装了Qt5.4,当运行Hello World例子时,遇到了下列的情况   <span style=”font-size:18px;”>#include...
  • kejizuiqianfang
  • kejizuiqianfang
  • 2017-05-01 18:13
  • 1740
    个人资料
    • 访问:1762276次
    • 积分:18920
    • 等级:
    • 排名:第544名
    • 原创:341篇
    • 转载:290篇
    • 译文:6篇
    • 评论:169条
    最新评论