`
qimo601
  • 浏览: 3443991 次
  • 性别: 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实现这样的效果,以帮助开发者构建出独特而吸引人的用户界面。 ...

    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的形状,我们可以控制用户与窗体的交互范围。...

    如何创建不规则窗体

    创建不规则窗体还可以扩展到其他编程环境,如Qt、JavaFX等,原理类似,都需要自定义窗口的绘图和形状。在使用这些技术时,开发者需要具备一定的图形学知识,理解如何使用图形API来构建和操作形状。 总之,创建不...

Global site tag (gtag.js) - Google Analytics