看到好文章,收藏一下:
看到网上有很多不规则窗体的实现,效果很酷.于是使用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实现这样的效果,以帮助开发者构建出独特而吸引人的用户界面。 ...
该项目代码实现了以下...1.使用遮罩实现不规则窗体; 2.添加鼠标事件。当鼠标放置其上时鼠标指针显现为张开手掌形状,在其上按下鼠标左键指针显示为握住手掌形状且能拖动其到屏幕任意位置,在其上双击左键时退出程序。
本项目“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的形状,我们可以控制用户与窗体的交互范围。...