【转】QT实现不规则窗体
看到好文章,收藏一下:
看到网上有很多不规则窗体的实现,效果很酷.于是使用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实现不规则窗体相关推荐
- Qt中不规则窗体和部件的实现
Qt中不规则窗体和部件的实现 描述:a.png 窗口背景图 图片: 描述:mask.png 窗口掩码图 图片: 描述:toolbutton.png 按钮背景图 图片: 描述:toolbutton_ma ...
- QT每日一练day27:绘制不规则窗体
注:本文本来应该是以一个不规则的图片作为历程的,,忘记了!!!! 一.第一阶段:隐藏窗体框架 运行结果(GIF动图): widget.cpp 二.第二阶段:将窗口设置为透明 运行结果(GIF动 ...
- linux qt绘框,Qt绘制异形窗体
异形窗体即不规则窗体,一般采用png图片,一般绘制异形窗体分两步: 1.设置遮罩区 2.绘制图片 使用png图片的透明部分作为遮罩区,然后绘制图片,这样我们就看到一个只绘制了非透明部分的图形,废话少说 ...
- 事件过滤器及不规则窗体
事件过滤器及不规则窗体 文章目录 事件过滤器及不规则窗体 一.事件过滤器 二.不规则窗体 一.事件过滤器 有时候, 对象需要查看. 甚至要拦截发送到另外对象的事件. 例如, 对话框可能 想要拦截按键事 ...
- [转][小结][三种方法]实现WPF不规则窗体
实现WPF不规则窗体的三种常用的方法如下: 1.使用Blend等工具绘制一个不规则xaml,然后作为窗体的背景.这个可以参考xiaowei0705的这篇博文:WPF制作不规则的窗体 . 2.给wind ...
- 一起谈.NET技术,C#创建不规则窗体的几种方式
现在,C#创建不规则窗体不是一件难事,下面总结一下: 一.自定义窗体,一般为规则的图形,如圆.椭圆等. 做法:重写Form1_Paint事件(Form1是窗体的名字),最简单的一种情况如下 ...
- C# 制作不规则窗体的两种解决方案
我的广告单元,有空点一下哦,谢谢! 冒着被拍砖的危险,投放到首页.C#制作不规则窗体应该又是一个老生常谈的问题了,可能很多老鸟会带BS的眼神,那么请老鸟们视该文章如浮云吧. 制作不规则窗体,本例采用图 ...
- [转]Winform不规则窗体的实现心得
本文转自:http://www.cnblogs.com/haiq/articles/1751777.html Winform窗体通常都是矩形的,而本人在需要将一幅图片作为窗体背景,并且窗体边框呈现为图 ...
- Qt无边框窗体(Windows)
Qt无边框窗体Windows篇 去掉标题栏和边框 实现拖拽功能 还原窗体功能 注意点 我们可以做的更好 添加阴影 亚克力面板效果 结语 去掉标题栏和边框 首先第一步我们要通过设置系统绘制的边框消失 s ...
最新文章
- 周志华:深度学习理论探讨比应用滞后太多
- 线性回归代码matlab
- NYOJ 636 世界末日
- atlas和ajaxpro以及微软企业级类库在一起得web配置文件
- Oracle 多行合并一行 方法
- 开放源代码GIS资源集锦
- [leetcode] 68.二叉树的最近公共祖先
- Linux下搭建lamp论坛(phpwind+wordpress+discus)
- 靶形数独(洛谷-P1074)
- 如何才能写出一手逼疯同事的烂代码?
- ajax servlet怎么接收_【百战程序员从开始到植发】之AJAX
- i7处理器好吗_笔记本电脑处理器是i5好还是i7好?为什么?
- python编程案例教程-Python程序设计案例教程
- jep3.5 java 动态公式
- 关于流媒体压缩的问题xvidcore的问题
- mysql导入access2016_将 Access 2.0 和 Access 95 数据库导入到当前版本
- Kmeans算法思想
- python数据分析论文报告电影_一个实战案例带你走完python数据分析全流程:豆瓣电影评论的关键词云图制作...
- 再见,2020。您好,2021!
- Java 实现分页功能