Qt实现自定义图标功能

作者:hackett

微信公众号:加班猿

在上一节的基础上进行定义图标的功能

效果:要做的是应用的放大缩小、最小化功能,鼠标移动和点击图标变色

准备工作:

控件:

3个PushButton

1个Label

1个Frame

注意:需要进行布局,如果不布局可能会出现不能放大缩小的情况

准备图标嵌入控件

可以上阿里巴巴矢量图标库下载自己想要的图标,也可以去其他网站或者自己制作

我这里下载了三个图标

QSS样式表

右键选择改变样式表,其他按键同理

添加颜色:

QPushButton为改变这个按钮的属性

QPushButton:hover为鼠标移动到按键的效果

QPushButton:pressed为鼠标按下按键的效果

添加资源:

可以选择我们资源里面的图片为按键填充图片

接下来就可以链接到槽函数做相应的处理即可

放大缩小按钮需要做下margin值的设置void Widget::on_buttonMax_clicked()

{

if(this->isMaximized())//是否已经最大

{

ui->vLayout->setMargin(9);  //对应widget布局的Margin值

this->showNormal();

}else

{

ui->vLayout->setMargin(0); //全屏时widget布局的Margin值为0

this->showMaximized();

}

}

源码:

main.cpp#include "widget.h"

#include

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

Widget w;

w.show();

return a.exec();

}

widget.cpp#include "widget.h"

#include "ui_widget.h"

#include

#include

#include

Widget::Widget(QWidget *parent) :

QWidget(parent),

ui(new Ui::Widget)

{

ui->setupUi(this);

this->setWindowFlags(Qt::FramelessWindowHint);

QGraphicsDropShadowEffect *shadow = new QGraphicsDropShadowEffect();

shadow->setBlurRadius(5);   //边框圆角

shadow->setColor(Qt::black);//边框颜色

shadow->setOffset(0);       //不偏移

ui->shadowWidget->setGraphicsEffect(shadow);

this->setAttribute(Qt::WA_TranslucentBackground);   //父窗口设置透明,只留下子窗口

}

Widget::~Widget()

{

delete ui;

}

void Widget::mouseMoveEvent(QMouseEvent *event)

{

if(this->z == QPoint())//判断鼠标移动 如果为空的话不移动

return;

QPoint y = event->globalPos();//鼠标相当于桌面左上角的位置,鼠标全局位置

QPoint x = y - this->z;

this->move(x);

}

void Widget::mousePressEvent(QMouseEvent *event)

{

QPoint y = event->globalPos();//鼠标相当于桌面左上角的位置,鼠标全局位置

QPoint x = this->geometry().topLeft();//窗口左上角位于桌面左上角的位置,窗口位置

this->z = y - x; //定值,不变

}

void Widget::mouseReleaseEvent(QMouseEvent *event)

{

this->z = QPoint(); //鼠标松开获取当前的坐标

}

void Widget::on_buttonClose_clicked()

{

this->close();

}

void Widget::on_buttonMax_clicked()

{

if(this->isMaximized())//是否已经最大

{

ui->vLayout->setMargin(9);  //对应widget布局的Margin值

this->showNormal();

}else

{

ui->vLayout->setMargin(0); //全屏时widget布局的Margin值为0

this->showMaximized();

}

}

void Widget::on_buttonMin_clicked()

{

this->showMinimized();

}

widget.h#ifndef WIDGET_H

#define WIDGET_H

#include

namespace Ui {

class Widget;

}

class Widget : public QWidget

{

Q_OBJECT

public:

explicit Widget(QWidget *parent = 0);

~Widget();

virtual void mouseMoveEvent(QMouseEvent *event);

virtual void mousePressEvent(QMouseEvent *event);

virtual void mouseReleaseEvent(QMouseEvent *event);

private slots:

void on_buttonClose_clicked();

void on_buttonMax_clicked();

void on_buttonMin_clicked();

private:

Ui::Widget *ui;

QPoint z;

};

#endif // WIDGET_H

如果你觉得文章还不错,记得"点赞关注"

关注我的微信公众号【 加班猿 】可以获取更多内容

qss 更改图标_Qt实现自定义图标功能相关推荐

  1. plt绘图加图标_Matplotlib基础--自定义图标图例

    图例可以为可视化赋予实际含义,为不同的图标元素附上明确说明.我们前面看到了一些简单的图例创建例子:本小节中我们来介绍一下在 Matplotlib 中自定义图例的位置和进行美化的方法. 可以使用plt. ...

  2. Echarts地图自定义图标Symbol同时动态更改图标进行切换显示

    Echarts地图自定义图标Symbol同时动态更改图标进行切换显示 文章目录 0.前言 1.引用模块 2.界面设计 3.数据准备 4.实例地图 5.动态修改气泡图标 6.结束语 0.前言 实现的效果 ...

  3. 鼠标图标怎么自定义_苹果ios14怎么自定义图标 图标位置自由排列换风格教程

    苹果ios14怎么自定义图标 图标位置自由排列换风格教程 iOS 14 发布后,自定义主屏幕图标成为了一种流行的趋势,一些用户通过「快捷指令」将默认的应用图标替换为自定义图标,然后将应用本来的图标隐藏 ...

  4. GIS定位和自定义图标

    开发工具与关键技术:VS软件,GIS定位和自定义图标 作者:陈隆 撰写时间:2020年05月02日 说到GIS可能很多人都很陌生吧,其实只有没接触过的就肯定是不知道这到底是什么来的,可能知道GPS的比 ...

  5. u盘中的android文件夹图标不显示,U盘中文件夹怎么设置自定义图标而不变样

    在U盘里面,装着各种各样的资料文件,除了文件夹外,还有不少的图标文件(如*.ico,*.exe等).U盘的文件夹的图标有时会随着文件夹的移动而变样或者失效,有什么办法可以将文件夹图标换成自定义图标而不 ...

  6. 如何调换手机桌面位置_苹果ios14怎么自定义图标 图标位置自由排列换风格教程...

    苹果ios14怎么自定义图标 图标位置自由排列换风格教程 iOS 14 发布后,自定义主屏幕图标成为了一种流行的趋势,一些用户通过「快捷指令」将默认的应用图标替换为自定义图标,然后将应用本来的图标隐藏 ...

  7. ionic自定义图标(ion-icon)

    背景 ionic自带图标库有限,不能满足项目里面各种图标,需要自定义图标. 开始 下载图标库 从iconfont.cn上面搜索想要的图标,添加入库(也就是购物车那个图标) 添加到项目里面,一个项目肯定 ...

  8. element自定义图标;element自定义icon;element-ui自定义tab栏图标;

    一.场景:element-ui本身提供了图标,但是不全面或者开发时候需要使用自定义图标展示.此时可以用到elemenUi的自定义图标.参考链接 二.html使用,和正常的element的 图标 i 标 ...

  9. Android开发丶基于高德地图实现定位、搜索定位、绘制圆圈自定义图标及改变圆圈半径等功能

    前一段时间接了个需求,进入一个地图界面,可以获取当前位置信息,通过输入位置信息获取位置,绘制圆圈并可以实时改变圆圈半径等功能,地图SDK我们使用的是高德地图,仔细阅读了开发文档,发现这些需求都可以通过 ...

最新文章

  1. 网页静态化技术Freemarker
  2. 清理svn信息_推荐候选人有奖啦~11.26最新招聘信息看这里!
  3. Mybatis-Plus升级完成! 我的系统到底更新了什么?Mybatis-Plus比Mybatis好在了哪里?
  4. Chrome 调试 Android WebView 网页
  5. 计算机组成原理 第四章【指令系统】课后作业解析【MOOC答案】
  6. 消息中间件--RabbitMQ --死信队列
  7. 【写作技巧】绪论写作要点
  8. SQL ALTER TABLE 语句在项目中的使用
  9. mac上的android模拟器下载安装,Mac电脑上安装安卓模拟器,Mac如何安装Android模拟器...
  10. 电容电阻电感的等效分析
  11. push_back()函数的用法
  12. Doclist压缩方法简介
  13. Shiro session过期跳转到登录页面问题
  14. chrome 设置搜索结果,在新的标签页打开
  15. 【Android】使用MediaExtractor、MediaMuxer去掉视频文件中的音频数据
  16. C# 篇基础知识6——文件和流
  17. 我在linux主机用arm-linux-gcc编译后,复制到开发板根目录运行,出现/bin/sh: ./hello not found
  18. Android开发实战《手机安全卫士》——11.“进程管理”模块拓展 窗体小部件 生成快捷方式
  19. 什么是静态网站?什么是动态网站?
  20. httpclient+jsoup实现小说线上采集阅读

热门文章

  1. 基于JavaWeb的学生考勤系统
  2. 异常检测方法梳理,看这篇就够了!
  3. Python基础视频教程
  4. 【评测】义翘神州CHO细胞无血清培养基
  5. 日本房产泡沫的崩塌,虽然很长,希望80后仔细阅读
  6. 6-1 求实数和的函数
  7. 创建表的几种方式(语法总结)
  8. 找零程序Java_动态规划——硬币找零问题(java)
  9. php基础-GD库-批量制作水印图片
  10. php ci log,PHP框架CI CodeIgniter 的log_message开启日志记录方法