qt4.8 程序缩小到托盘后出现的问题

我在使用qt4.8编写一个程序的时候发现了一个很奇怪的问题。当我的主界面处于show状态时,
我的程序能够很顺畅的运行。但是当我把程序缩小到托盘,也就是吧主界面hide()了之后,我在
一些操作之后程序会自动退出。简单调试后认为应该不是我自己编写的代码的问题,而且执行完
我的操作后,qt部分的代码将我的程序关闭掉。但是我不知道为什么缩小到托盘会导致这样的后果,希望遇到这种情况的朋友能指导一下我怎么解决这个问题。

1个回答

你的代码有没有绘图,获取窗口大小等操作。如果有异常,调试下,看看出错的代码行。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
一个缩小到托盘的程序
一个托盘显示程序的源代码。只有一个窗体,只有缩小到托盘的代码.
程序缩小到托盘后,右键无法还原
MDI窗体,用RzTrayIcon实现系统托盘,双击图标能还原。rnrn现想用右键菜单实现还原rnrn试过前辈们的方法,但是之后就不能打开子窗体了。rnformstyle:=fsStayOnTop; rnshowwindow(form1.Handle,sw_shownormal);
c#将程序缩小到托盘
c# 将应用程序缩小到系统托盘,并在关闭时弹出关闭提示
自动启动程序并缩小到托盘下的奇怪问题
单独运行程序正常,rnrn重启动机器后,程序自动运行提示:rnrn未能找到文件 "c:\documents and settings\administrator\app.icornrn设置的图标是本目录的app.ico文件,关这个目录啥事啊.rnrn但是把exe放在"启动"里重启动,就一切正常,没有上面的提示,rnrn哪位大哥碰到过类似的问题吗,不胜感激.
关于程序缩小到托盘后系统无法关机的问题
我有个程序缩小到托盘后系统就无法关机了。rn程序中使用了SOCKETConnetion。rn程序缩小到托盘后无法拦截到系统的关机消息,窗口激活时能拦截到,经过处理程序能关闭但还是不能关闭系统。rn有人能帮助我吗?
VB6缩小到托盘
看到网络上,包括CSDN有蛮多网友分享了。我也做一个。 很普通的,。分享吧
小作品缩小到托盘
缩小到托盘,authorwar一个小作品
hideoe116cht ,OUTLOOK缩小到托盘
hideoe116cht ,OUTLOOK缩小到托盘 真的非常实用,直接安装就可以了。
vb 缩小到托盘
把程序缩小到托盘的代码, 非常简单,通过api实现
*****????*****请问如何按最小化后窗体缩小到托盘区?
请问如何才能实现按最小化后钮后窗体缩小到托盘区,点击托盘区小图标后程序又回到最大化状态?请给出代码谢谢!
C#托盘程序托盘程序托盘程序
托盘程序托盘程序托盘程序托盘程序托盘程序托盘程序托盘程序托盘程序托盘程序托盘程序
如何将一个JAVA程序缩小到托盘区?
多谢
如何让程序启动时直接缩小到托盘区??
我的程序是一个service程序。rnrn在服务启动时,rnForm1 = new TForm1(NULL);rnForm1->Show();rnrn在Form1内有TrayIcon1控件。rnrnrn我目前只能在计算机启动之后。单击一个键来实现缩到托盘区。rnrn我想让计算机启动时,自动缩到托盘区。该怎么搞呢???rnrn谢谢啊!
qt4.8程序打包 64位
1、将所依赖的dll和exe放在一个新目录下 2、用开源工具Inno Setup (http://www.jrsoftware.org/isinfo.php)。
菜鸟问题:程序缩小到任务栏!
我用rn ShowWindow(handle,SW_HIDE);rn SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);//*rn AddTrayIcon;rn 来实现程序缩小到任务栏。其中*句是为了其不在任务条上出现。程序名为Project1,AddTrayIcon代码为:rn with IconData do beginrn cbSize := sizeof(IconData);rn Wnd := Handle;rn UID := 1001;rn uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;rn hIcon := Application.Icon.Handle;rn szTip := 'App1.0';rn end;rn shell_NotifyIcon(NIM_ADD,@IconData);rnrn 可是缩小后老是在任务条上留有一个无图标的标志,文字为Project1。可是如果将*句在formcreate中调用 rn 就一切正常,为什么?
为什么程序缩小到系统托盘后热键没有响应了
RT。rn缩小到系统托盘后,注册的热键就没有了响应,原来是好的rn从托盘恢复状态后,热键也没有了响应
使用NotifyTrayIcon做托盘程序出现的问题
1、用VB.net的NotifyTrayIcon控件做托盘程序,在状态栏里是不显示程序图标了,但是按Alt + Tab时,还是能看到程序图标,而且尽管把程序主窗体设为visible = false了,还是可以这样把它调出来!怎么才能把这个Alt+Tab对话框的图标也给去掉?rnrn2、能否把图标资源给编译集成到程序里去,不用老是在程序目录下放一个图标,很别扭。rnrn3、现在主窗体上什么都没有,能否把主窗体给去掉,只出托盘图标和contextmenu。rn(我现在把主窗体改从system.windows.forms.applicationcontext继承,可以解决第一个问题,但是出现一个新问题是这样以后程序没有办法registHotkey)rnrn以上问题回答出任一个都给100分!
托盘程序编译时出现的问题 WM_NOTIFYICON
在.cpp文件头上加上代码#define WM_NOTIFYICON WM_USER+5 rnrn自定义消息映射ON_MESSAGE(WM_NOTIFYICON, OnNotifyIcon)rnrnDEBUG下编译通过运行正常。RELEASE下就编译出错了rnrnerror C2065: 'WM_NOTIFYICON' : undeclared identifierrnrn谁知道怎么回事?
程序缩小到任务栏后,触发什么事件??
程序缩小到任务栏后,触发什么事件??或是消息。rn我想在应用程序最小 化到任务栏后再做一个操作
程序最小化到托盘后发送消息的问题
有两个程序A和B。rn当程序B的主窗口可见时,A通过B程序的主窗口的名字,利用FindWindow找到B程序的主窗口句柄,再利用SendMessage向B程序的主窗口发送消息。rn但当程序B最小化到托盘后(利用TTrayIcon控件),A就没法通过窗口名称来找B的窗口句柄了。rn有别的什么方法找到B的窗口句柄吗?或者此时B窗口根本就不存在了?
托盘程序、程序最小化到托盘
托盘程序 系统托盘 最小化到系统托盘 完整的实例下载
C# 托盘程序 托盘程序
C# 托盘程序,简单,大家参考看看 C# 托盘程序,简单,大家参考看看
Qt4.8安装后的部分问题及解决方案
本来安装的是4.6,写了几个例子,能正常执行,昨天卸载了4.6,安装了Qt4.8,由于不是YUM安装的,一开始的时候,各种不能运行。下面列出几个问题,及解决方案。   1、记得配置环境变量 修改~/.bash_profile文件,增加下面几句话 export QTDIR=/usr/local/Trolltech/Qt-4.8.3 export PATH=$QTDIR/bin:$PATH...
如何将程序缩小到任务栏?
用WindowState:=wsMinimized不能将程序缩小到任务栏,只能缩小到左下角。是不是还要设置什么属性?
求助:关于点击关闭按钮缩小到任务栏托盘的问题。
应用的期望实现:rn1、点击最小化按钮到任务栏托盘rn2、点击关闭按钮到任务栏托盘(类似MSN)rn3、在任务栏托盘中右键弹出菜单中选择退出则退出应用。rnrn问题描述:rn以上三个需求均已实现,我是在CLOSEQUERY事件中写有代码,定义一个bollean变量,如果点击的是菜单则该变量为真,在CLOSEQUERY中判断该变量是否为真,如果是真则return 0,如果是假就return 1并且最小化到托盘。rn但现在有一个问题,就是系统关机的时候,必须先关掉该应用才能关机,这是因为关机的时候会触发该主窗口的CLOSEQUERY事件,但由于没有改变那个变量的值为真,所以始终关机的时候就只会最小化到托盘,并且由于该应用无法关闭,导致无法关机。rnrn不知道各位同仁有没有更好的方法解决这个问题,谢谢了。
关于托盘程序的问题?
我写了一个托盘程序,里面有一个 Timer ,实时监测我所运行的程序的状态。rn但是我发现 Timer 在运行的时候就关不了机了, 把 Timer 结束后,可以关机。rn请问该如何得到关机的信息???rn
程序托盘问题
很简单,我想要跟QQ一样的功能,点程序主界面最小化按钮,程序主界面消失,任务栏没有,只有托盘有个图标显示程序仍在运行,然后我再点击托盘图标,程序主界面又弹出来,QQ:1033005200 望多多指点
程序最小化到托盘的问题
不知道大家都是如何做的,rn我是用的windows mobile 6自带的notification控件做的,rn问题一:程序后台运行后,点击托盘上的小图标把程序唤回,总是有气泡通知提示,如何去掉这个通知呢?rn 有人说要找到这个通知的句柄,并把它做掉,那么这是怎么做的呢?请给个具体的步骤吧。rn问题二:我一不小心把这个气泡通知没有释放掉,程序已经退出了,有什么办法把这个通知在托盘上去掉呢?就是去掉托盘上的图标。
求助:托盘程序的问题
请各位帮帮忙看一下下面这个程序,为什么我在运行的时候系统托盘那里多出一个空位来却显示不出图标。rnrn$PBExportHeader$w_ab.srwrnforwardrnglobal type w_ab from windowrnend typernend forwardrnrnglobal type w_ab from windowrninteger width = 2533rninteger height = 1408rnboolean titlebar = truernstring title = "aa"rnboolean controlmenu = truernboolean minbox = truernboolean maxbox = truernboolean resizable = truernlong backcolor = 67108864rnstring icon = "AppIcon!"rnboolean center = truernevent ue_event pbm_custom01rnend typernglobal w_ab w_abrnrntype variablesrnstr_notifyicondata istr_notifyicondatarnrnConstant Long NIM_ADD = 0 //显示rnConstant Long NIM_MODIFY = 1 //修改rnConstant Long NIM_DELETE = 2 //删除rnrnConstant Long NIF_MESSAGEorNIF_ICONorNIF_TIP = 7rnConstant Long IMAGE_ICON = 1rnConstant Long LR_LOADFROMFILE = 16rnrnConstant Long WM_LBUTTONDBLCLK = 515 //双击rnConstant Long WM_RBUTTONUP = 517 //右键单击rnrnLong hIconrnrnrnend variablesrnrnforward prototypesrnpublic function integer wf_removefromtray ()rnpublic function integer wf_addtotray (string as_icon, long al_handle, string as_tips)rnend prototypesrnrnevent ue_event;//m_pop 为右键弹出式菜单(可自己随意定义)rnm_pop lm_popuprnInteger li_X, li_YrnChoose Case lparamrn Case WM_LBUTTONDBLCLK//双击 rn wf_RemoveFromTray()//删除图标rn This.Show()//显示窗口rn CASE WM_RBUTTONUP//右键rn //messagebox(string(This.X),string(This.y))rn li_X = This.Xrn li_Y = This.Y rn //移动到屏幕外以免show时看到rn This.Move( - This.Width - 10, - This.Height - 10 )rn //在屏幕外显示窗口,以便能看到菜单条(菜单条属于此窗口)rn This.Show()rn //在鼠标位置弹出菜单rn lm_popup = CREATE m_poprn lm_popup.m_pop_menu.PopMenu(PointerX(),PointerY())rn //恢复设置rn if isvalid(This) thenrn This.Hide()rn This.Move(li_X,li_Y)rn DESTROY lm_popuprn end ifrnend choosernrnend eventrnpublic function integer wf_removefromtray ();Shell_NotifyIcon(NIM_DELETE,istr_notifyicondata)rnif hIcon <> 0 then DestroyIcon(hIcon)rnhIcon = 0rnreturn 0rnrnend functionrnrnpublic function integer wf_addtotray (string as_icon, long al_handle, string as_tips);if hIcon = 0 then//图标还没有装载rn hIcon = LoadImage(0,as_icon,IMAGE_ICON,0,0,LR_LOADFROMFILE)rn messagebox("",string(hIcon))rnend ifrnif hIcon = 0 thenrn MessageBox ("系统提示", "装载图标失败!")rn Return -1rnend ifrnrnistr_notifyicondata.cbsize = 88rnistr_notifyicondata.Hwnd = al_handlernistr_notifyicondata.uid = 0rn//窗口回调事件号,pbm_custom01即为1024,02为1025,依此类推 rnistr_notifyicondata.ucallbackmessage = 1024rnistr_notifyicondata.hIcon = hIconrnistr_notifyicondata.tips = as_tipsrnistr_notifyicondata.uflag = NIF_MESSAGEorNIF_ICONorNIF_TIPrnrnshell_notifyicon(NIM_ADD,istr_notifyicondata)rnmessagebox("",string(shell_notifyicon(NIM_ADD,istr_notifyicondata)))rnreturn 1rnend functionrnrnrnevent resize;string lsrnrnls=GetCurrentDirectory()rnIf SizeType = 1 Then//窗口最小化rn wf_RemoveFromTray()//删除图标rn //加载新图标rn if wf_AddToTray('picture\1.ico', handle(this), "医保系统") = 1 thenrn this.Hide()rn end ifrnend ifrnrnrnrnrnrnend eventrnrnevent close;wf_RemoveFromTray()rnend event
托盘程序的关机问题
由于改写了closing事件,使得关闭缩小到托盘中。然后用下面的函数来检测关机消息,系统关机或重启的时候,发现程序是关闭了,但是系统无法继续执行关机命令,请问问题出在那里?rnprotected override void WndProc(ref Message m)rn rn //int WM_QUERYENDSESSION = 0x0011;rn int WM_ENDSESSION = 0x0016;rn if (m.Msg == WM_ENDSESSION )rn rn m.WParam = (IntPtr)0;rn m.Result = (IntPtr)1;rn this.Close();rn notifyIconServer.Visible = false ;rn notifyIconServer.Dispose();rn Application.Exit(); rn base.WndProc (ref m);rn
最小化程序到托盘的问题
我参照网上的代码,遍写了一个最小化程序到托盘的程序。存在几个很怪的问题,感觉莫名其妙,不知道怎么回事?可是别人软件最小化到托盘的时候都没有这样的问题:rn1,双击最小化后的托盘图标,有时(在任务栏中点击使程序最小化而不是点击最小化按钮来使程序最小化)不能还原。rn2,当鼠标右键点击托盘图标时,在弹出的菜单中点击退出。程序退出了,但托盘里的图标没有立即消失,直到鼠标从图标上移过。3,当程序退出时,经常会导致任务栏中的当前任务发生跳转。rn大哥们请留下E-MAIL,我把代码发给你们,请你们帮我看看。
托盘程序的激活问题!
类似于金山词霸,一个对话框程序,只能运行一个实例,当前一个实例运行以后,最小化到托盘,再运行一个实例的时候,会将前一个实例激活,并显示对话框于最上层。如何做到?不能获得前一个实例的窗口句柄,使用什么样的方法激活呢?使用消息?
托盘程序的问题
我的程序放在了Windows托盘中,一切正常。rn 但有一个问题,假如 explorer.exe 由于意外中止了,这时托盘消失了,过了一会explorer.exe又重新起来了,有时是手工运行起来了,但这时,我的程序的托盘图标就不在了,可像金山词霸的托盘图标能恢复起来。rn 请教大侠,这该怎么做?
一个托盘程序的问题
托盘程序,想做成这样:rn在主画面状态下,点任务栏,就收回到系统托盘。(就像flashgetg那样子)rn要怎么做呢?(主要是怎么获取用户点击了该程序的任务栏这个消息)rnrn还有一个问题,怎么执行windows的刷新动作,调用哪个api函数?
关于程序托盘问题?
我为程序设计了一个托盘,程序关闭后托盘图标并不消失,要把鼠标移到托盘图标上一下后,图标才消失,为什么?rn代码如下:rnint CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)rnrn if (CFrameWnd::OnCreate(lpCreateStruct) == -1)rn return -1;rn rn if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOPrn | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||rn !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))rnrn rn TRACE0("Failed to create toolbar\n");rn return -1; // fail to creatern rnrn //系统托盘rn NOTIFYICONDATA NofityData;rn NofityData.cbSize=sizeof(NOTIFYICONDATA);rn NofityData.hWnd=this->m_hWnd;rn NofityData.uID=IDR_MAINFRAME;rn NofityData.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;rn NofityData.uCallbackMessage=WM_MY_TRAY_NOTIFICATION;rn HICON hIcon;rn hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);rn NofityData.hIcon=hIcon;rn lstrcpyn(NofityData.szTip,"我的托盘",sizeof(NofityData.szTip));rn ::Shell_NotifyIcon(NIM_ADD,&NofityData);rn if(hIcon)rn DestroyIcon(hIcon);rnrn rnrn if (!m_wndStatusBar.Create(this) ||rn !m_wndStatusBar.SetIndicators(indicators,rn sizeof(indicators)/sizeof(UINT)))rn rn TRACE0("Failed to create status bar\n");rn return -1; // fail to creatern rn rn m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);rn EnableDocking(CBRS_ALIGN_ANY);rn DockControlBar(&m_wndToolBar);rnrn return 0;rnrn//系统托盘rnLRESULT CMainFrame::OnTrayNotification(WPARAM wParam,LPARAM lParam)rnrn if ((wParam == IDR_MAINFRAME)&&(lParam == WM_LBUTTONDOWN))rn ShowWindow(SW_SHOWNORMAL);rn return 0;rnrnvoid CMainFrame::OnSysCommand(UINT nID, LPARAM lParam)rnrn // 屏蔽最大化(MFC Bug),将最小化重定向至隐藏窗口rn if (nID == SC_MAXIMIZE)rn return;rn if (nID == SC_MINIMIZE)rn ShowWindow(SW_HIDE);rn elsern CWnd::OnSysCommand(nID, lParam);rnrn
托盘程序气泡问题
void Cdlg::OnBnClickedButton1()rnrn m_nid.cbSize=sizeof(NOTIFYICONDATA);rn m_nid.uFlags = NIF_INFO;rn m_nid.uTimeout = 5000;rn m_nid.dwInfoFlags = NIIF_INFO;rn _tcscpy(m_nid.szInfo,_T("AAA"));rn strcpy(m_nid.szInfoTitle, _T("BBB"));rn return Shell_NotifyIcon(NIM_NIM_MODIFY, &m_nid);rnrnrn单击按钮就是不出现气泡,Why?
托盘程序弹出菜单的问题
在托盘区的图标上点一下,弹出一个菜单。rn如果不选菜单的任何一项把鼠标移到其他地方的话菜单就一直在那里,不会自己消失。rn不仅是自己编的这个程序,我发现其他一些编得不好的程序也常常有这种现象。rn这是什么原因造成的?漏了一步操作?
关于托盘程序的问题!
我的程序是一个对话框,我想让他实现用户点右上角的小叉叉时,我的程序不是关闭而是变成小图标在状态栏,当双击它时又恢复成对话框,也就是他只可以在任务管理器里关闭我的程序,谢谢!rn
关于托盘程序的问题
我写了一个程序,让它在运行后出现在右下角,也就是系统时间的旁边。可是我怎样才能实现当右键点击它时,弹出一个菜单?急!!!
最小化到托盘的程序的问题
我做了一个程序能够使它最小化到系统的托盘区,这个功能已经基本实现。但是唯独有个问题,就是现在不能在托盘区的图标上点击右键弹出菜单。rn这部分的代码我是这样写的:rnCMenu menu; rnmenu.LoadMenu(IDR_POP_MENU);rnCPoint pos; rnCMenu *pMenu = menu.GetSubMenu(0);rnASSERT(pMenu!=0); rnGetCursorPos(&pos);rnpMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, pos.x, pos.y,AfxGetMainWnd());rn调试的时候发现断言那里过不去......rn菜单资源我是在vc里用资源编辑器添加的。但是昨天在网上看到一篇文档说这种程序的菜单是不能直接编辑的,要手动添加......我不明白什么意思,今天来问问。
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池