[文件] shapewidget.h
/*
*@date 2012-11-17
*/
#ifndef __SHAPE_WIDGET_H
#define __SHAPE_WIDGET_H
#include <QWidget>
#include <QMouseEvent>
#include <QPaintEvent>
#include <QPoint>
class ShapeWidget:public QWidget
{
Q_OBJECT
public:
ShapeWidget(QWidget *parent = 0);
~ShapeWidget();
protected:
void mousePressEvent(QMouseEvent *);
void mouseMoveEvent(QMouseEvent *);
//重写QWidget::paintEvent(QPaintEvent *() 函数 窗体重绘
void paintEvent(QPaintEvent *);
private:
QPoint dragPosition;
};
#endif
[文件] shapewidget.cpp
#include "shapewidget.h"
#include <QPainter>
#include <QPixmap>
#include <QBitmap>
#include <QDebug>
ShapeWidget::ShapeWidget(QWidget *parent):QWidget(parent,Qt::FramelessWindowHint)
{
QPixmap pix;
pix.load("./images/linux.png",0,Qt::AvoidDither|Qt::ThresholdDither|Qt::ThresholdAlphaDither); //第三个参数为读取图片的方式
//窗体的大小和图片大小一样
resize(pix.size());
/*实现不规则窗体的关键,setMask()的作用是为调用它的控件增加一个遮罩,遮住所选区域以外的部分使之看起来是透明的。他的参数可为一个QBitmap对象(如本实例)或一个QRegion对象,此处调用QPixmap的mask函数获得图片自身的遮挡,为一个QBitmap对象。实例中使用的是png格式的图片,他的透明部分实际上就是一个遮罩*/
setMask(pix.mask());
}
ShapeWidget::~ShapeWidget()
{
}
void ShapeWidget::mousePressEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton)
{
dragPosition = event->globalPos() - frameGeometry().topLeft();
event->accept();
}
if(event->button() == Qt::RightButton)
{
close();
}
}
void ShapeWidget::mouseMoveEvent(QMouseEvent *event)
{
if(event->buttons() & Qt::LeftButton)
{
move(event->globalPos() - dragPosition);
event->accept();
}
}
void ShapeWidget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.drawPixmap(0,0,QPixmap("./images/linux.png"));
}
[文件] main.cpp
#include <QApplication>
#include "shapewidget.h"
int main(int argc,char **argv)
{
QApplication app(argc,argv);
ShapeWidget *shapew = new ShapeWidget;
shapew->show();
return app.exec();
}
Qt.rar_qt 不规则窗体_qt 窗体
版权申诉
54 浏览量
2022-09-22
23:02:20
上传
评论
收藏 1KB RAR 举报
刘良运
- 粉丝: 66
- 资源: 1万+
最新资源
- 农村信用社联合社计算机信息系统投产与变更管理办.docx
- 农村信用社联合社计算机信息系统数据管理办法.docx
- 利用SPSS作临床效度分析线上计算网站介绍-医学研究部统计谘.(医学PPT课件).ppt
- 利用Zabbix监控mysqldump定时备份数据库状态.docx
- 利用计算机解决问题的基本过程.doc
- 化工铁路通信工程总结.doc
- 北京大学网络教育软件工程作业.docx
- 医药公司(连锁店)计算机操作规程未新系统的自行按照旧制修改-新系统过制的编号加修模版.doc
- 医药公司(连锁店)计算机系统操作规程模版.doc
- 医药连锁门店计算机系统的操作和管理程序未新系统的自行按照旧制修改-新系统过制的编号加修模版.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0