Qt系统托盘程序
2013-12-06 10:37
459 查看
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 ;
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 ;
相关文章推荐
- Qt:系统托盘图标
- Qt之任务栏系统托盘图标
- qt环境程序中通过QProcess启动进程的方式启动windows系统自带的画图程序中遇到的错误
- C#实现WinForm程序的动态系统托盘图标
- Qt之系统托盘(QSystemTrayI…
- 在ARM开发板的嵌入式linux系统上运行的QT程序,必须得要在linux里用QT编吗
- Win32 API 实现系统托盘程序
- Java程序实现系统托盘菜单
- qt编写的android程序在android系统中运行,中文显示乱码的解决方法
- 将 C++ Qt 程序移植至 Linux 系统
- Qt实现系统托盘以及托盘的右键菜单
- 写系统托盘程序的几个相关问题
- VC 制作系统托盘程序实现将窗口最小化到系统托
- 关于Qt 5-MSVC 2015 64位在 win7 64位系统debug程序崩溃的问题
- 从系统Demo中改的一个 托盘图标带窗体的系统服务程序
- 用Qt写软件系列四:定制个性化系统托盘菜单
- MFC中提示对话框的滑动弹出和程序图标加入系统托盘的实现
- 程序缩小到托盘后系统就无法关机(解决方案)——处理WM_QUERYENDSESSION消息,并把它标识为处理过了
- 怎样是程序显示在系统托盘中
- 删除已知进程ID的程序的系统托盘中的图标