看到好文章,收藏一下:

看到网上有很多不规则窗体的实现,效果很酷.于是使用QT也实现了一个,QT的不规则窗体实现非常简单,只需要设置一个mask(遮掩)图片,这个图片的格式可以使用png或bmp格式,我使用了png格式,默认窗体是矩形的,使用png图像,将需要隔离在窗体之外的区域的像素设置为白色或透明色,其他颜色的区域对应显示出来的窗体.关键代码就几行.#ifndef IRREGULARFORM_H
#define IRREGULARFORM_H#include <QWidget>
#include "ui_irregularform.h"
#include <QBitmap>
#include <QPixmap>
#include <QMouseEvent>
#include <QRect>class IrregularForm : public QWidget
{Q_OBJECTpublic:IrregularForm(QWidget *parent = 0);~IrregularForm();
protected:void  mouseMoveEvent(QMouseEvent *event);void  mousePressEvent(QMouseEvent *event); void  mouseReleaseEvent(QMouseEvent *event);
private:Ui::IrregularFormClass ui;QPoint mouseMovePos;};#endif // IRREGULARFORM_H#include "irregularform.h"IrregularForm::IrregularForm(QWidget *parent): QWidget(parent)
{setWindowFlags(Qt::FramelessWindowHint);QPixmap mask(":/IrregularForm/Resources/mask.png");//加载掩码图像setMask(QBitmap(mask.mask())); //设置窗体的掩码图像,抠除图像的白色区域实现不规则窗体QPalette p;//设置调色板p.setBrush(QPalette::Window, QBrush(mask));//将调色板的画刷设置为掩码位图,在不规则窗体上显示出掩码位图setPalette(p);mouseMovePos = QPoint(0, 0);
}IrregularForm::~IrregularForm()
{}void  IrregularForm::mouseMoveEvent(QMouseEvent *event)//鼠标按下并移动则移动不规则窗体
{if(mouseMovePos != QPoint(0, 0)){move(geometry().x() + event->globalPos().x() - mouseMovePos.x(), geometry().y() + event->globalPos().y() - mouseMovePos.y());mouseMovePos = event->globalPos();}
}void  IrregularForm::mousePressEvent(QMouseEvent *event)
{mouseMovePos = event->globalPos();
}void  IrregularForm::mouseReleaseEvent(QMouseEvent *event)
{mouseMovePos = QPoint(0, 0);
}

效果图

源码下载(使用Qt实现的不规则窗体,实现了按任意png图形确定窗体形状.以及调用WebService实现天气预报和翻译功能)

转载:http://download.csdn.net/download/henreash/4393914

【转】QT实现不规则窗体相关推荐

  1. Qt中不规则窗体和部件的实现

    Qt中不规则窗体和部件的实现 描述:a.png 窗口背景图 图片: 描述:mask.png 窗口掩码图 图片: 描述:toolbutton.png 按钮背景图 图片: 描述:toolbutton_ma ...

  2. QT每日一练day27:绘制不规则窗体

    注:本文本来应该是以一个不规则的图片作为历程的,,忘记了!!!!     一.第一阶段:隐藏窗体框架 运行结果(GIF动图): widget.cpp 二.第二阶段:将窗口设置为透明 运行结果(GIF动 ...

  3. linux qt绘框,Qt绘制异形窗体

    异形窗体即不规则窗体,一般采用png图片,一般绘制异形窗体分两步: 1.设置遮罩区 2.绘制图片 使用png图片的透明部分作为遮罩区,然后绘制图片,这样我们就看到一个只绘制了非透明部分的图形,废话少说 ...

  4. 事件过滤器及不规则窗体

    事件过滤器及不规则窗体 文章目录 事件过滤器及不规则窗体 一.事件过滤器 二.不规则窗体 一.事件过滤器 有时候, 对象需要查看. 甚至要拦截发送到另外对象的事件. 例如, 对话框可能 想要拦截按键事 ...

  5. [转][小结][三种方法]实现WPF不规则窗体

    实现WPF不规则窗体的三种常用的方法如下: 1.使用Blend等工具绘制一个不规则xaml,然后作为窗体的背景.这个可以参考xiaowei0705的这篇博文:WPF制作不规则的窗体 . 2.给wind ...

  6. 一起谈.NET技术,C#创建不规则窗体的几种方式

    现在,C#创建不规则窗体不是一件难事,下面总结一下:       一.自定义窗体,一般为规则的图形,如圆.椭圆等. 做法:重写Form1_Paint事件(Form1是窗体的名字),最简单的一种情况如下 ...

  7. C# 制作不规则窗体的两种解决方案

    我的广告单元,有空点一下哦,谢谢! 冒着被拍砖的危险,投放到首页.C#制作不规则窗体应该又是一个老生常谈的问题了,可能很多老鸟会带BS的眼神,那么请老鸟们视该文章如浮云吧. 制作不规则窗体,本例采用图 ...

  8. [转]Winform不规则窗体的实现心得

    本文转自:http://www.cnblogs.com/haiq/articles/1751777.html Winform窗体通常都是矩形的,而本人在需要将一幅图片作为窗体背景,并且窗体边框呈现为图 ...

  9. Qt无边框窗体(Windows)

    Qt无边框窗体Windows篇 去掉标题栏和边框 实现拖拽功能 还原窗体功能 注意点 我们可以做的更好 添加阴影 亚克力面板效果 结语 去掉标题栏和边框 首先第一步我们要通过设置系统绘制的边框消失 s ...

最新文章

  1. 周志华:深度学习理论探讨比应用滞后太多
  2. 线性回归代码matlab
  3. NYOJ 636 世界末日
  4. atlas和ajaxpro以及微软企业级类库在一起得web配置文件
  5. Oracle 多行合并一行 方法
  6. 开放源代码GIS资源集锦
  7. [leetcode] 68.二叉树的最近公共祖先
  8. Linux下搭建lamp论坛(phpwind+wordpress+discus)
  9. 靶形数独(洛谷-P1074)
  10. 如何才能写出一手逼疯同事的烂代码?
  11. ajax servlet怎么接收_【百战程序员从开始到植发】之AJAX
  12. i7处理器好吗_笔记本电脑处理器是i5好还是i7好?为什么?
  13. python编程案例教程-Python程序设计案例教程
  14. jep3.5 java 动态公式
  15. 关于流媒体压缩的问题xvidcore的问题
  16. mysql导入access2016_将 Access 2.0 和 Access 95 数据库导入到当前版本
  17. Kmeans算法思想
  18. python数据分析论文报告电影_一个实战案例带你走完python数据分析全流程:豆瓣电影评论的关键词云图制作...
  19. 再见,2020。您好,2021!
  20. Java 实现分页功能

热门文章

  1. Scala 学习(四) 集合之List
  2. weblogic部署步骤
  3. 2018-2019-1 20165320 20165325 20165337 实验一 开发环境的熟悉
  4. SpringBoot------定时任务
  5. POJ 2425 A Chess Game(有向图SG函数)题解
  6. 嵌入式开发环境搭建:开发板tftp下载环境搭建
  7. Go语言基础环境配置(windows)
  8. oracle数据库主主复制
  9. 操作系统中死锁的概念
  10. MySql避免重复插入记录方法(ignore,Replace,ON DUPLICATE KEY UPDATE)