`
qimo601
  • 浏览: 3449376 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

【转】QT实现不规则窗体

    博客分类:
  • 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_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不规则窗体的实现】是Qt编程中一种高级的GUI特效,它允许开发者创建具有独特形状和外观的窗口,突破传统矩形边框的限制。Qt提供了两种实现不规则窗体的方法,分别适用于Qt3和Qt4版本。本文将详细介绍如何在Qt中...

    QT不规则窗体

    QT不规则窗体是Qt库中的一个特性,它允许开发者创建具有非标准形状的窗口,这些窗口不再局限于传统的矩形,而是可以自定义为任意形状。这种技术在UI设计中非常有用,可以用来创建引人注目的应用界面,提高用户体验。...

    实现不规则窗体

    在本话题中,我们将专注于使用QT库来实现不规则窗体。 QT是一个跨平台的C++库,它提供了丰富的图形用户界面(GUI)功能,支持Windows、Linux、macOS等多种操作系统。实现不规则窗体在QT中主要涉及QPainter和QRegion...

    Qt.rar_qt 不规则窗体_qt 窗体

    本压缩包"Qt.rar_qt 不规则窗体_qt 窗体"提供了一种实现Qt不规则窗体的方法,通过代码来详细解释这一过程。 首先,要实现不规则窗体,我们需要使用Qt中的QPainterPath类来定义窗口的形状。QPainterPath允许我们创建...

    Qt不规则窗体程序,含调用天气预报和翻译WebService

    总的来说,实现“Qt不规则窗体程序,含调用天气预报和翻译WebService”涉及到了Qt图形界面的自定义、网络请求的处理以及数据解析等多个方面。通过学习和实践,你可以创建出功能丰富、视觉效果独特的应用程序。

    不规则窗体不规则窗体不规则窗体

    不规则窗体的设计与实现涉及到了图形用户界面(GUI)开发、图形渲染技术以及可能的自定义控件编程。 一、图形用户界面(GUI)设计 GUI设计是软件开发的重要组成部分,它决定了用户与软件交互的方式。不规则窗体的...

    qt不规则窗体

    在本文中,我们将深入探讨如何在Qt中实现不规则窗体,并通过分析提供的"shapewidget"文件来理解其实现细节。 首先,Qt提供了一种称为`QPainterPath`的类,用于创建和操作复杂的图形路径。这个类是实现不规则窗体的...

    QT 开发不规则窗体的源程序

    QT开发不规则窗体是创建独特用户界面的重要技术,它允许开发者突破标准矩形窗口的限制,创造出具有个性化和吸引力的应用程序。以下是对这个主题的详细解析。 首先,`QT`是一个跨平台的C++库,它提供了丰富的图形...

    Qt5开发及实例-CH407.rar,Qt5不规则窗体的实现方法代码

    Qt5开发及实例,实例CH407,不规则窗体的实现方法。具体实现一个蝴蝶图形外沿形状的不规则形状对话框,也可以在不规则窗体上放置按钮等控件,可以通过鼠标左键拖曳窗体,单击鼠标右键关闭窗体。运行效果如图4.14所示。...

    QT特殊效果窗体不规则窗体.rar

    在Qt中,可以利用QPainterPath和QRegion等类实现非矩形窗体,即不规则窗体,同时结合QGraphicsView和QGraphicsScene等组件,可以为这些窗体添加丰富的动画和特效,提升用户界面的吸引力和交互性。 首先,...

    Qt不规则悬浮窗体,类似于360 悬浮框

    在Qt编程中,创建一个不规则的透明悬浮窗体是一项有趣且实用的技术,这使得应用程序可以像360安全卫士等软件一样拥有个性化的窗口样式。Qt库提供了丰富的功能来帮助开发者实现这样的效果,主要涉及到窗口管理、事件...

    Qt实现半透明不规则窗体示例

    对于不规则窗体,Qt提供了一种称为“形状剪裁”(Shape Masking)的方法。通过覆盖`QWidget::paintEvent()`函数并使用`QPainter`来绘制自定义形状,我们可以定义窗口的轮廓。以下是一个简单的例子: ```cpp #...

    Qt实现半透明不规则窗体的示例

    在Qt框架中,创建半透明且形状不规则的窗体是一项高级特性,它涉及到窗口管理器、绘图机制以及自定义事件处理等多个方面。本文将深入探讨如何利用Qt实现这样的效果,以帮助开发者构建出独特而吸引人的用户界面。 ...

    基于Qt的不规则窗体(图片遮罩)与鼠标事件控制实践案例

    该项目代码实现了以下...1.使用遮罩实现不规则窗体; 2.添加鼠标事件。当鼠标放置其上时鼠标指针显现为张开手掌形状,在其上按下鼠标左键指针显示为握住手掌形状且能拖动其到屏幕任意位置,在其上双击左键时退出程序。

    python+pyqt4实现的圆角窗体(不规则窗体)

    本项目“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框架,都...

    基于Qt的异形窗体

    在异形窗体的场景下,QPainter可以用于绘制窗体的背景形状,从而实现不规则的外观。而QRegion则用来定义窗口的可交互区域,即用户可以点击和操作的部分。通过设置QRegion的形状,我们可以控制用户与窗体的交互范围。...

Global site tag (gtag.js) - Google Analytics