看到好文章,收藏一下:
看到网上有很多不规则窗体的实现,效果很酷.于是使用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不规则窗体的实现】是Qt编程中一种高级的GUI特效,它允许开发者创建具有独特形状和外观的窗口,突破传统矩形边框的限制。Qt提供了两种实现不规则窗体的方法,分别适用于Qt3和Qt4版本。本文将详细介绍如何在Qt中...
QT不规则窗体是Qt库中的一个特性,它允许开发者创建具有非标准形状的窗口,这些窗口不再局限于传统的矩形,而是可以自定义为任意形状。这种技术在UI设计中非常有用,可以用来创建引人注目的应用界面,提高用户体验。...
在本话题中,我们将专注于使用QT库来实现不规则窗体。 QT是一个跨平台的C++库,它提供了丰富的图形用户界面(GUI)功能,支持Windows、Linux、macOS等多种操作系统。实现不规则窗体在QT中主要涉及QPainter和QRegion...
本压缩包"Qt.rar_qt 不规则窗体_qt 窗体"提供了一种实现Qt不规则窗体的方法,通过代码来详细解释这一过程。 首先,要实现不规则窗体,我们需要使用Qt中的QPainterPath类来定义窗口的形状。QPainterPath允许我们创建...
总的来说,实现“Qt不规则窗体程序,含调用天气预报和翻译WebService”涉及到了Qt图形界面的自定义、网络请求的处理以及数据解析等多个方面。通过学习和实践,你可以创建出功能丰富、视觉效果独特的应用程序。
不规则窗体的设计与实现涉及到了图形用户界面(GUI)开发、图形渲染技术以及可能的自定义控件编程。 一、图形用户界面(GUI)设计 GUI设计是软件开发的重要组成部分,它决定了用户与软件交互的方式。不规则窗体的...
在本文中,我们将深入探讨如何在Qt中实现不规则窗体,并通过分析提供的"shapewidget"文件来理解其实现细节。 首先,Qt提供了一种称为`QPainterPath`的类,用于创建和操作复杂的图形路径。这个类是实现不规则窗体的...
QT开发不规则窗体是创建独特用户界面的重要技术,它允许开发者突破标准矩形窗口的限制,创造出具有个性化和吸引力的应用程序。以下是对这个主题的详细解析。 首先,`QT`是一个跨平台的C++库,它提供了丰富的图形...
Qt5开发及实例,实例CH407,不规则窗体的实现方法。具体实现一个蝴蝶图形外沿形状的不规则形状对话框,也可以在不规则窗体上放置按钮等控件,可以通过鼠标左键拖曳窗体,单击鼠标右键关闭窗体。运行效果如图4.14所示。...
在Qt中,可以利用QPainterPath和QRegion等类实现非矩形窗体,即不规则窗体,同时结合QGraphicsView和QGraphicsScene等组件,可以为这些窗体添加丰富的动画和特效,提升用户界面的吸引力和交互性。 首先,...
在Qt编程中,创建一个不规则的透明悬浮窗体是一项有趣且实用的技术,这使得应用程序可以像360安全卫士等软件一样拥有个性化的窗口样式。Qt库提供了丰富的功能来帮助开发者实现这样的效果,主要涉及到窗口管理、事件...
对于不规则窗体,Qt提供了一种称为“形状剪裁”(Shape Masking)的方法。通过覆盖`QWidget::paintEvent()`函数并使用`QPainter`来绘制自定义形状,我们可以定义窗口的轮廓。以下是一个简单的例子: ```cpp #...
在Qt框架中,创建半透明且形状不规则的窗体是一项高级特性,它涉及到窗口管理器、绘图机制以及自定义事件处理等多个方面。本文将深入探讨如何利用Qt实现这样的效果,以帮助开发者构建出独特而吸引人的用户界面。 ...
本项目“python+pyqt4实现的圆角窗体(不规则窗体)”旨在利用PyQt4库创建一个具有独特视觉效果的圆角或不规则形状的窗口。 要实现这样的效果,首先需要理解PyQt4中的QPainter和QRegion类。QPainter是Qt中的绘图引擎...
不规则窗体的实现主要依赖于操作系统提供的API(应用程序接口)或图形库,如Windows操作系统中的GDI+和Direct2D,以及跨平台的Qt、GTK+等库。在Windows系统中,通过重载WM_NCPAINT消息处理函数,可以自定义非客户区...
实现不规则窗体的方法多种多样,但通常包括以下几个步骤: 1. **自定义绘图**:在Windows平台上,可以使用GDI+或者Direct2D API进行自定义绘图。在其他平台,如Linux的GTK+,Mac OS的Cocoa,或者跨平台的Qt框架,都...
在异形窗体的场景下,QPainter可以用于绘制窗体的背景形状,从而实现不规则的外观。而QRegion则用来定义窗口的可交互区域,即用户可以点击和操作的部分。通过设置QRegion的形状,我们可以控制用户与窗体的交互范围。...
创建不规则窗体还可以扩展到其他编程环境,如Qt、JavaFX等,原理类似,都需要自定义窗口的绘图和形状。在使用这些技术时,开发者需要具备一定的图形学知识,理解如何使用图形API来构建和操作形状。 总之,创建不...