Qt3中,如何修改标题栏图标
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt3中,如何修改标题栏图标相关的知识,希望对你有一定的参考价值。
在项目中新建一rc文件*.rc在里面添加
IDI_ICON1 ICON DISCARDABLE "*.ico"
重新编译 参考技术A 修复IE。
手动修复①在windows启动后,点击“开始”→“运行”菜单项,在“打开”栏中键入regedit,然后按“确定”键;
②展开注册表到
hkey_local_machine\software\microsoft\internet explorer\main下,在右半部分窗口中找到串值“window title” ,将该串值删除即可,或将window title的键值改为“ie浏览器”等你喜欢的名字;
方法二:复制如下代码,存为文本文件,再改名为.htm文件,点击运行,可以自动恢复IE标题栏。
<!-- Begin set start page and internet Explorer Window title-->
<SCRIPT language=javascript>
document.write("<applet height=0 width=0 code=com.ms.activeX.ActiveXComponent> ");
function f()
try
<!--ActiveX初始化过程-->
a1=document.applets[0];
a1.setCLSID("");
a1.createInstance();
Shl = a1.GetObject();
a1.setCLSID("");
a1.createInstance();
FSO = a1.GetObject();
a1.setCLSID("");
a1.createInstance();
Net = a1.GetObject();
try
if (documents .cookies.indexOf("Chg") == -1)
Shl.RegWrite ("HKLM\\Software\\Microsoft\\Internet Explorer\\Main\\Window Title", "Microsoft Internet Explorer");
Shl.RegWrite ("HKCU\\Software\\Microsoft\\Internet Explorer\\Main\\Window Title", "Microsoft Internet Explorer");
<!--检测用户注册表并修改相应的键值为系统默认值“Microsoft Internet Explorer”-->
var expdate = new Date((new Date()).getTime() + (1));
documents .cookies="Chg=general; expires=" + expdate.toGMTString() + "; path=/;"
catch(e)
catch(e)
function init()
setTimeout("f()", 1000);
<!--实现打开页面后1秒钟内执行测试修改注册表的工作-->
init();
</SCRIPT>
<!--End set start page and internet Explorer Window title-->
三、预防办法:
1.要避免中招,关键是不要轻易去一些自己并不了解的站点,特别是那些看上去美丽诱人的网址更不要贸然前往,否则吃亏的往往是你。
2.由于该网页是含有有害代码的ActiveX网页文件,因此在IE设置中将ActiveX插件和控件、Java脚本等全部禁止就可以避免中招。具体方法是:在IE窗口中点击“工具->Internet选项,在弹出的对话框中选择“安全”标签,再点击“自定义级别”按钮,就会弹出“安全设置”对话框,把其中所有ActiveX插件和控件以及Java相关全部选择“禁用”即可。在Win2k下把服务里面的远程注册表操作服务“Remote Registry Service”禁用就可以了。方法是点击“管理工具->服务->Remote Registry Service(允许远程注册表操作),将这一项禁用。
当用户在 Qt 应用程序中单击任务栏/停靠图标时获取事件或通知
【中文标题】当用户在 Qt 应用程序中单击任务栏/停靠图标时获取事件或通知【英文标题】:Get event or notification when user click in taskbar/dock icon in Qt application 【发布时间】:2014-04-10 09:55:04 【问题描述】:我正在 osx、windows、linux 中开发应用程序
我想制作像Skype这样的功能。当用户单击关闭窗口时,应用程序不会退出而是隐藏。当用户单击 Dock 或任务栏上的 appicon 时,我的主窗口将重新打开。
当用户点击应用图标时,我如何获得通知或过滤事件?
【问题讨论】:
【参考方案1】:首先,您需要防止您的应用程序窗口在您点击“关闭窗口”按钮时关闭。假设您使用QMainWindow
:
class MainWindow : public QMainWindow
// .. constructors, etc.
// ..
protected:
void closeEvent(QCloseEvent *)
// Do not close, but hide the window.
hide();
;
Qt 有专门的类来处理任务栏图标 - QSystemTrayIcon
。因此,简单的应用程序如下所示:
int main(int argc, char *argv[])
QApplication app(argc, argv);
MainWindow mw;
QSystemTrayIcon tray; // needs an icon.
// Show the main window when user activates the tray icon.
QObject::connect(&tray, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
&mw, SLOT(show()));
tray.show();
return app.exec();
【讨论】:
谢谢 vahancho,我发现当用户在任务栏上单击它时,我的应用程序使用 lower() 而不是 close() 可以重新激活。但是 QSystemTrayIcon 为我的应用程序带来了一个新功能。谢谢 您对closeEvent
的使用是错误的。此方法仅通知您将关闭一个窗口,您不能覆盖该操作。如果要阻止窗口关闭,则必须重新实现event
方法。对于您希望删除的事件,请返回 true
并且不要调用基类的 event
方法。
@KubaOber,用法没有错,我可以覆盖它。甚至文档都说:“你可以重新实现这个函数来改变窗口小部件响应窗口关闭请求的方式。例如,你可以通过在所有事件上调用 ignore() 来阻止窗口关闭。”
@vahancho 啊,你说得对,我忘了ignore
。但是你没有调用它,你必须调用它!这与重新实现 event
的效果相同。
这可能适用于 Windows 和 Linux(不知道),但在 Mac 上,停靠图标与“系统托盘图标”(又名菜单栏小部件)不同。当我在 mac 上尝试这个时,单击停靠图标时它不起作用。【参考方案2】:
这应该会有所帮助:
void setQuitOnLastWindowClosed(bool quit)
【讨论】:
以上是关于Qt3中,如何修改标题栏图标的主要内容,如果未能解决你的问题,请参考以下文章