看到好文章,收藏一下:
看到网上有很多不规则窗体的实现,效果很酷.于是使用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_OBJECT
public:
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
- 大小: 14.1 KB
分享到:
相关推荐
关于使用Qt制作不规则窗体方法的文档,包含Qt3和Qt4两种实现方法的源码演示。感觉在Qt里便这种GUI特效比在MFC里要容易的多,大家可以对比看看哈,Qt的代码只需要几十行就搞定了,经试用过了,源码在Ubuntu里编译有效...
使用Qt实现的不规则窗体,实现了按任意png图形确定窗体形状.以及调用WebService实现天气预报和翻译功能.
实现不规则窗体
Qt5开发及实例,实例CH407,不规则窗体的实现方法。具体实现一个蝴蝶图形外沿形状的不规则形状对话框,也可以在不规则窗体上放置按钮等控件,可以通过鼠标左键拖曳窗体,单击鼠标右键关闭窗体。运行效果如图4.14所示。...
Qt不规则窗体的实现,包括各种窗口实现的代码。
博文链接:https://string.iteye.com/blog/78282
Qt实现半透明不规则窗体的示例,希望可以帮助到需要的朋友
这是Qt实现半透明不规则窗体的一个示例,希望能帮助到需要的朋友
Qt 不规则透明悬浮窗体可以随意拖动
贴图式开发不规则窗体的源程序。工程中经常用不规则窗体美化界面,使用项目赏心悦目。
本例提供了不规则窗体的实现代码,仅供大家下载参考
QT特殊效果窗体不规则窗体.rar https://txwtech.blog.csdn.net/article/details/127044764?spm=1001.2014.3001.5502
工具盒类+进度条+调色板+电子钟+可拓展对话框+不规则窗体+启动画面
qt5.0开发漂亮界面,不规则窗口界面的实现,单击鼠标切换不规则背景图片。
本文章地址:... 遮罩层实现鼠标消息穿透(透明区域穿透,非透明区域不穿透) 实现需求1:鼠标穿透 实现需求2:软件分层构架的菜单穿透 作者:红模仿 QQ:21497936 日期:2019年04月08日
14:自定义标题栏和不规则窗体的实现 真正意义上实现了鼠标拖动 不仅仅是拖动标题栏才能动 15:QT4与QT5均可编译通过 亲测无误 ">说明: 1:此示例只是用来显示视频流 并没有处理存储视频及回放视频功能 2:在打开项目...
C#实现的圆形窗口代码,可用于特殊应用场合
在window的qt creator平台上开发的,qt定时器的方法连续播放几幅图片看起来像动画,而且运行时外围的窗体都被透明化了,只有显示破壳而出的小鸡的动画,在你的桌面上随意拖动。