Qt 添加程序图标和系统托盘图标
<p><span style="color: rgba(0, 0, 255, 1); font-size: 14pt"><strong>添加程序图标</strong></span></p><p><span style="color: rgba(255, 0, 0, 1)"><strong>第一种方法:</strong></span></p>
<p><span style="color: rgba(0, 0, 0, 1); background-color: rgba(255, 255, 255, 1)">1、创建程序的时候,选择添加默认图标</span></p>
<p><span style="color: rgba(255, 153, 204, 1)"><strong><img src="https://img2018.cnblogs.com/common/1496771/201911/1496771-20191107100049933-1189403381.png"></strong></span></p>
<p> </p>
<p>2、替换程序目录下的ico文件,编译生成即可。</p>
<p><img src="https://img2018.cnblogs.com/common/1496771/201911/1496771-20191107100210430-1633010557.png"></p>
<p><span style="color: rgba(255, 0, 0, 1)"><strong>第二种方法:</strong></span></p>
<p><span style="color: rgba(255, 153, 204, 1)"><strong><strong>比较适合一开始没有添加程序图标的情况</strong></strong></span></p>
<p>1、项目右键--》添加--》新建项--》资源文件(.rc) 创建 ico.rc文件</p>
<p>2、在 ico.rc文件 中写入下面的代码</p>
<div class="cnblogs_code">
<pre>IDI_ICON1 ICON DISCARDABLE <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1.ico</span><span style="color: rgba(128, 0, 0, 1)">"</span></pre>
</div>
<p>3、将1.ico 文件放到程序的当前目录下,然后编译生成即可。</p>
<p><span style="color: rgba(0, 0, 255, 1); font-size: 14pt"><strong>添加系统托盘图标</strong></span></p>
<p> 1、添加成员变量</p>
<div class="cnblogs_code">
<pre>QSystemTrayIcon m_systray;</pre>
</div>
<p>2、在构造函数里执行如下代码</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 设置提示文字</span>
m_systray.setToolTip(QString::fromLocal8Bit(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">易语言</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">));
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 设置托盘图标</span>
m_systray.setIcon(QIcon(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">C:\\Users\\Administrator.USER-20190313RI\\Desktop\\img\\rose.ico</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">));
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 设置托盘菜单</span>
QMenu* menu = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> QMenu();
menu</span>-><span style="color: rgba(0, 0, 0, 1)">addAction(ui.actionTest1);
menu</span>-><span style="color: rgba(0, 0, 0, 1)">addAction(ui.action_HelloWorld);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 添加分隔符</span>
menu-><span style="color: rgba(0, 0, 0, 1)">addSeparator();
menu</span>-><span style="color: rgba(0, 0, 0, 1)">addAction(ui.actionExit);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 设置菜单</span>
<span style="color: rgba(0, 0, 0, 1)"> m_systray.setContextMenu(menu);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 关联托盘事件</span>
connect(&m_systray, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">, SLOT(OnSystemTrayClicked(QSystemTrayIcon::ActivationReason)));
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 显示托盘菜单</span>
<span style="color: rgba(0, 0, 0, 1)"> m_systray.show();
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 托盘菜单命令的处理</span>
connect(ui.actionExit, SIGNAL(triggered()), <span style="color: rgba(0, 0, 255, 1)">this</span>, SLOT(OnExit()));</pre>
</div>
<p>3、编写相关槽函数</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> QtTest2::OnSystemTrayClicked(QSystemTrayIcon::ActivationReason reason)
{
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (reason == QSystemTrayIcon::Trigger || reason ==<span style="color: rgba(0, 0, 0, 1)"> QSystemTrayIcon::DoubleClick)
{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 显示主窗口</span>
<span style="color: rgba(0, 0, 255, 1)">this</span>-><span style="color: rgba(0, 0, 0, 1)">showNormal();
}
}
</span><span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> QtTest2::OnExit()
{
QApplication::exit();
}</span></pre>
</div>
<p>4、重写 closeEvent 函数</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">void</span> QtTest2::closeEvent(QCloseEvent* <span style="color: rgba(0, 0, 255, 1)">event</span><span style="color: rgba(0, 0, 0, 1)">)
{
</span><span style="color: rgba(0, 0, 255, 1)">this</span>-><span style="color: rgba(0, 0, 0, 1)">hide();
</span><span style="color: rgba(0, 0, 255, 1)">event</span>-><span style="color: rgba(0, 0, 0, 1)">ignore();
}</span></pre>
</div>
<p> </p>
<p> </p>
<p> </p><br><br>
来源:https://www.cnblogs.com/duxie/p/11806923.html
頁:
[1]