环境:win10;Qt5.11

网上搜索了很久,也没发现这方面的详细教程,花了我好久时间,于是记录下过程。

一、设置任务栏图标是否显示

设置flags: Qt.FramelessWindowHint能去掉窗口标题栏,但不显示任务栏图标

设置flags: Qt.FramelessWindowHint | Qt.Window能显示任务栏图标

然而,对于子窗口不同,子窗口视根窗口为parent,自然不能显示任务栏图标。

这时需要用到Loader组件去动态加载子窗口才能显示任务栏图标,但情况不同。

当子窗口设置为flags: Qt.FramelessWindowHint | Qt.Window,loader加载后并不能显示任务栏图标。

经过尝试发现子窗口visible:true时能显示,由于编译器调试缓存问题,开始误以为是loader的visible属性影响了窗口的visible属性,试了很多遍才搞清楚其实是窗口类的visible属性决定是否显示任务栏图标,即使你item.show出来也不会影响这个机制。

于是有2种处理选择:

  1. 每次加载前先清除loader,在加载  //不建议这么做
  2. 在每次hide()|close()后主动清除loader资源 //必须这么做,因为很多时候close仅仅只是相当于hide(),而没有delete对象,而对象是保存在loader中

这里说一下第二种,最简单处理是设置子窗口的onClosing槽函数。

代码:

  onClosing: {hide()//不可视窗口退出时不会退出应用loader.source = ""//释放资源console.log("win on closeing.")}

二、更改任务栏图标

由于Window没有icon设置属性,只能借助C++的QWindow|QQuickWindow类实现。

直接上代码:

*.h文件

#ifndef FUNCC_H
#define FUNCC_H#include <QObject>
#include<QQuickWindow>
class FuncC:public QObject
{Q_OBJECT
//注册属性Q_PROPERTY(QQuickWindow* win READ win WRITE setWin NOTIFY winChanged)
public:FuncC();QQuickWindow*win()const;
public Q_SLOTS:void setWin(QQuickWindow*arg);//对m_win赋值自动调用此槽函数Q_SIGNALS:void winChanged();
private:QQuickWindow*m_win;//qml窗口载体};#endif // FUNCC_H

*.cpp

#include "funcc.h"
#include<QDebug>
FuncC::FuncC():m_win(Q_NULLPTR)
{}QQuickWindow *FuncC::win() const
{return  m_win;
}void FuncC::setWin(QQuickWindow *arg)
{qDebug()<<"m_win is viaed";m_win=arg;if(!m_win){qDebug()<<"m_win is null";return;}
m_win->setTitle("title");//设置标题
m_win->setIcon(QIcon(":/images/myIcon.png"));//设置图标emit winChanged();//发送信号
}

这里有一个细节,m_win->setIcon(QIcon(":/图片.png"))

':/'是*.cpp和*.h文本调用资源文件的方式,'qrc:/'是*.qml文本调用资源文件方式

毕竟就因为这个细节耽误了我2天时间,害得我疯狂百度屁用没有!!!可能就是太简单,所以没有人发这方面的文章吧!

最后,等每次loader加载完组件后,立即调用注册的c++类完成更改图标:

funcC.win=loader.item

于此,可以自由控制窗口显示图标及更改图标。

但还有一个缺陷是,自定义的窗口标题栏和任务栏的标题栏的图标是不一致的,而一样又会导致任务栏的图标和标题栏的图标不一致,所以设置窗口图标是治标不治本,只是任务栏图标默认采用窗口图标而已。

如果有这样的需要,可以专门去设计TaskBarButton的样式了。TaskBarButton提供了一个overlay,只需要提供的图片能覆盖住任务栏的图片就能完美掩饰了。

Qml控制多个窗口任务栏图标显示及更改图标相关推荐

  1. win7 任务栏图标计算机,win7系统任务栏里显示出计算机图标的操作方法

    很多小伙伴都遇到过对win7系统任务栏里显示出计算机图标进行设置的困惑吧,一些朋友看过网上对win7系统任务栏里显示出计算机图标设置的零散处理方法,并没有完完全全明白win7系统任务栏里显示出计算机图 ...

  2. html桌面图标样式,如何更改图标样式,换桌面图标的方法

    打开桌面,桌面上摆放了放多程序的快捷方式,我们每天打开电脑最先接触的就是这些快捷方式图标.时间长了,是不是感觉乏味了.可以换一换.比如,在我的电脑桌面上有这样一个图标,那怎样更改桌面图标?下面,小编给 ...

  3. 电脑桌面图标显示错乱-重建图标缓存

    重建图标缓存. 1. 用软件,比如"魔方"--FixMaster--图标缓存修复--重建图标缓存. 2.手动刷新缓存:首先打开资源管理器--组织--文件夹和搜索选项--查看,选中& ...

  4. Touch Bar 废物利用系列 | 在触控栏上显示 Dock 应用图标

    简评: 这是我见过的最有用的 TouchBar 应用,感谢@Aceyclee 分享 都说 Intel 第八代 CPU 对比上代是牙膏不小心挤多了,而配备第八代 CPU 的 MacBook Pro,只有 ...

  5. Windows11 任务栏不显示应用程序图标

    1.按windows徽标+X即可 2.任务管理器结束explorer并重新运行

  6. 一招搞定win10网络图标显示问题-网络图标不见了

    win10网络图标有时候会消失不见,通过以下任意一种方法轻松搞定. 方法一: 步骤一:win+R,输入services.msc,找到 Network List Service,双击打开,依次点击:启动 ...

  7. 电脑右下角WiFi图标显示是地球图标,但是能上网,要让他显示出WiFi图标这么做...

    第一步键盘上窗口键+r 输入regedit 然后找到下面的终极地址 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parame ...

  8. java 任务栏程序_如何在任务栏显示java程序图标

    该代码实现了在系统右下角的任务栏中显示程序的图标,并且最小化程序后单击图标可以显示出来这个程序窗口 import java.awt.Color; import java.awt.Image; impo ...

  9. xp计算机管理下的服务显示不出来,WinXP系统任务栏不显示打开窗口的三种解决方案...

    最近,不少windowsXP系统用户都碰到了任务栏不显示打开窗口的问题.不过,他们还反馈用TAB+ALT或任务管理器应用程序却可以看到任务项目.这是怎么回事呢?其实,该问题可能是桌面程序explore ...

最新文章

  1. 深入理解iframe
  2. 一个完整的iOS开发框架(Frameworks)-NimbusKit
  3. 2021聊城二中高考成绩查询,聊城高中成绩排名2021,聊城中考分数线排行榜
  4. tomcat配置多个web网站的配置详解
  5. 21行代码AC——HDU1106 排序
  6. Android 安全提示 笔记
  7. Java设计模式之(工厂模式)--简单工厂模式--工厂方法模式--抽象工厂模式
  8. azure linux 多磁盘 lvm,EVE-NG扩展磁盘空间(扩展LVM卷)
  9. (7)<a>标签之锚点和回到顶部功能
  10. Linux disk 100% busy,谁造成的?
  11. java 获取当前时间并转化为yyyy-MM-dd HH:mm:ss格式(性程安全模式与不安全)
  12. Quartz简单理解
  13. 一些嵌入式开发有用的github上的开源代码库
  14. 一文看懂什么是车规级芯片
  15. Golang interface 全面介绍
  16. 服务器svn自动同步,svn主备服务器实时同步
  17. 玉米迷宫,Meteor Shower S,单词接龙
  18. Centos7系统启动盘的正确安装姿势
  19. 团队对员工工作积极性的影响
  20. Vue 引入高德地图 vue-amap

热门文章

  1. 基于android的家庭收支管理软件
  2. T12烙铁(焊台)通用电源(2个方案,24V)
  3. java字符串转数组遍历,深入分析
  4. python爬取晋江文学城_「天鹰文学网」著名小说网站《天鹰文学》宣布关站 - seo实验室...
  5. 激光打靶训练设备和模拟影像射击的区别性
  6. 单连通图(算法导论22.3-12)
  7. OpenCV基于Python霍夫圆检测—标准霍夫圆检测
  8. Flash 与课件制作:加载图片
  9. matlab获取href,用 MATLAB 抓取网页数据小程序
  10. 浅谈秒杀系统架构设计