如何在Qt中建立全局的托盘图标

蔡大魔王 2013-04-04 11:34:36
我的程序有好多个窗口,我想建立一个一直存在的托盘图标,在main函数中貌似建立不了啊,不知道是我哪里做错了
...全文
166 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
雲天之巔 2013-04-06
  • 打赏
  • 举报
回复
引用 10 楼 bigmonstercai 的回复:
引用 8 楼 qq214517703 的回复:托盘图标的显示是由这样控制的: trayicon->show(); //显示托盘 trayicon->hide(); //隐藏托盘 管你窗口隐藏没隐藏,托盘又不受影响。 我键盘事件(http://bbs.csdn.net/topics/390414933?page=1#)那个帖子说一个人只能连续回复三次,回复不……
表示无能为力,不懂了e...
蔡大魔王 2013-04-06
  • 打赏
  • 举报
回复
引用 8 楼 qq214517703 的回复:
托盘图标的显示是由这样控制的: trayicon->show(); //显示托盘 trayicon->hide(); //隐藏托盘 管你窗口隐藏没隐藏,托盘又不受影响。
我键盘事件(http://bbs.csdn.net/topics/390414933?page=1#)那个帖子说一个人只能连续回复三次,回复不了了…… 那个帖子里说的问题我感觉和这个帖子里的也有些关系 那个帖子9楼描述的问题我找到原因了,输入的V必须是大写的,否则传递的参数不对……但是现在按下按钮后仍会使有输入框的程序假死,知道新的按钮窗口被激活,那个程序才会恢复响应同时字符串也输入进去了。我感觉这个和我另一个帖子里的问题(http://bbs.csdn.net/topics/390415033?page=1#post-394118889)是一个原因,是不是我的程序将一些资源独占了(比如说剪贴板?),导致其他程序需要排队访问?求大神帮忙解答下
蔡大魔王 2013-04-05
  • 打赏
  • 举报
回复
引用 2 楼 openXMPP 的回复:
main函数里创建不了指的是? 在GUI线程里创建就可以
刚开始我新建QSystemTrayIcon时用了this,但是main函数里好像不能用this,后来用0就行了,在GUI线程里创建是怎么做的啊?
蔡大魔王 2013-04-05
  • 打赏
  • 举报
回复
引用 1 楼 qq214517703 的回复:
是系统右下方的托盘图标么? QSystemTrayIcon *trayicon; trayicon = new QSystemTrayIcon(this); QIcon ico("./1.jpg"); trayicon->setIcon(ico); //设置图标 trayicon->setContextMen……
我的程序有一段时间是所有窗口隐藏,通过监测鼠标的位置来确定显示哪个窗口,在这段时间里,托盘图标的菜单也隐藏了,点击它没有任何反应,只有当新的窗口出现时菜单才出现,可是托盘图标就是要在这段没有任何窗口的时间里发挥作用的,不知道应该怎么解决这个问题啊?
乔巴好萌 2013-04-05
  • 打赏
  • 举报
回复
main函数里创建不了指的是? 在GUI线程里创建就可以
雲天之巔 2013-04-05
  • 打赏
  • 举报
回复
是系统右下方的托盘图标么? QSystemTrayIcon *trayicon; trayicon = new QSystemTrayIcon(this); QIcon ico("./1.jpg"); trayicon->setIcon(ico); //设置图标 trayicon->setContextMenu(trayiconMenu); //设置菜单(QMenu *trayiconMenu;) trayicon->show(); //显示托盘
蔡大魔王 2013-04-05
  • 打赏
  • 举报
回复
引用 8 楼 qq214517703 的回复:
托盘图标的显示是由这样控制的: trayicon->show(); //显示托盘 trayicon->hide(); //隐藏托盘 管你窗口隐藏没隐藏,托盘又不受影响。
我的窗口隐藏时托盘图标没有隐藏,但是功能尽失,开始我给它设置了一个菜单,但是在窗口隐藏的时间里无法使菜单显示出来,后来我直接设置单击托盘图标关闭程序,但是在窗口隐藏时单击后没有任何反应,只有触发使窗口显示的动作后程序才自动关闭。 以下是我的main函数的代码,建立的窗口中有一个按钮执行了this->hide(),单击这个按钮后只有鼠标放在了屏幕中的指定区域中才会出现新的窗口,在hide之后,鼠标放在指定区域之前单击托盘图标没有反应,如果在这段时间里单击过托盘图标,鼠标放在指定区域中后程序就会退出
#include <QApplication>
#include <QTextCodec>
#include "Inkling.h"
#include <QIcon>
#include <QAction>
#include <QMenu>

int main(int argc,char *argv[])
{
    QApplication app(argc,argv);
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
    MainWindow w;
    w.show();

    QSystemTrayIcon *trayicon=new QSystemTrayIcon();
    QIcon ico(":/icon/Inkling.ico");
    trayicon->setIcon(ico);  //设置图标
    trayicon->show();
    QObject::connect(trayicon,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),trayicon,SLOT(hide()));
    QObject::connect(trayicon,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),qApp,SLOT(quit()));
    return app.exec();

}
雲天之巔 2013-04-05
  • 打赏
  • 举报
回复
托盘图标的显示是由这样控制的: trayicon->show(); //显示托盘 trayicon->hide(); //隐藏托盘 管你窗口隐藏没隐藏,托盘又不受影响。
雲天之巔 2013-04-05
  • 打赏
  • 举报
回复
引用 6 楼 bigmonstercai 的回复:
引用 5 楼 openXMPP 的回复:引用 4 楼 bigmonstercai 的回复:引用 2 楼 openXMPP 的回复:main函数里创建不了指的是? 在GUI线程里创建就可以 刚开始我新建QSystemTrayIcon时用了this,但是main函数里好像不能用this,后来用0就行了,在GUI线程里创建是怎么做的啊? 那个跟main没关系吧,是你创……
那个tiis可以不指定 trayicon = new QSystemTrayIcon; 这样就行了
蔡大魔王 2013-04-05
  • 打赏
  • 举报
回复
引用 5 楼 openXMPP 的回复:
引用 4 楼 bigmonstercai 的回复:引用 2 楼 openXMPP 的回复:main函数里创建不了指的是? 在GUI线程里创建就可以 刚开始我新建QSystemTrayIcon时用了this,但是main函数里好像不能用this,后来用0就行了,在GUI线程里创建是怎么做的啊? 那个跟main没关系吧,是你创建时没指定父widget 对Qt来说,……
我一在main函数中使用this就提示““this”: 只能在非静态成员函数的内部引用”啊
乔巴好萌 2013-04-05
  • 打赏
  • 举报
回复
引用 4 楼 bigmonstercai 的回复:
引用 2 楼 openXMPP 的回复:main函数里创建不了指的是? 在GUI线程里创建就可以 刚开始我新建QSystemTrayIcon时用了this,但是main函数里好像不能用this,后来用0就行了,在GUI线程里创建是怎么做的啊?
那个跟main没关系吧,是你创建时没指定父widget 对Qt来说,main线程就是 GUI线程

16,215

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧