使用setmask实现不规则窗体
来源:互联网 发布:gta5美女捏脸数据最新 编辑:程序博客网 时间:2024/05/16 04:02
setmask为调用它的空间添加一个遮罩,在这个遮罩范围之外的都没有显示,但是窗体大小不会变化。
#ifndef SHAPEWIDGET_H#define SHAPEWIDGET_H#include <QWidget>#include <QBitmap>#include <QApplication>#include <QMouseEvent>#include <Qpainter>class ShapeWidget : public QWidget{ Q_OBJECTpublic: explicit ShapeWidget(QWidget *parent = 0); signals: public slots:protected: void mousePressEvent(QMouseEvent *e); void mouseMoveEvent(QMouseEvent *e); void paintEvent(QPaintEvent *);private: QPixmap pix; QPoint point; };#endif // SHAPEWIDGET_H
#include "shapewidget.h"#include <QDebug>ShapeWidget::ShapeWidget(QWidget *parent) : QWidget(parent,Qt::FramelessWindowHint){ qDebug() << size(); pix.load(":/temp.png",0,Qt::AvoidDither | Qt::ThresholdAlphaDither | Qt::ThresholdDither); setMask(pix.mask()); qDebug() << size();}void ShapeWidget::mousePressEvent(QMouseEvent *e){ if (e->button() == Qt::LeftButton) { point = e->globalPos() - frameGeometry().topLeft(); e->accept(); } if (e->button() == Qt::RightButton) { close(); }}void ShapeWidget::mouseMoveEvent(QMouseEvent *e){ //Note that the returned value is always Qt::NoButton //for mouse move events. // if (e->buttons() & Qt::LeftButton) { move(e->globalPos() - point); e->accept(); }}void ShapeWidget::paintEvent(QPaintEvent *){ QPainter p(this); p.drawPixmap(0,0,pix);}
#include <QApplication>#include "shapewidget.h"int main(int argc, char* argv[]){ QApplication app(argc,argv); ShapeWidget sw; sw.show(); return app.exec();}
移动的时候计算使用的是相对于左上角的点。添加了右键功能。
使用的是从图片获得的一个遮掩,对于图片就是它的透明的部分
- 使用setmask实现不规则窗体
- setMask()与实现不规则形状的窗口
- 不规则窗体的实现
- wxWidgets实现不规则窗体
- 不规则窗体实现
- 不规则窗体实现 收藏
- 不规则窗体的实现
- QT实现不规则窗体
- wxWidgets实现不规则窗体
- javafx 不规则窗体实现
- QT实现不规则窗体
- QT实现不规则窗体
- QT实现不规则窗体
- Java实现不规则窗体
- java实现不规则窗体
- GDI+实现不规则窗体
- GDI+实现不规则窗体
- 使用GDI+实现漂亮的不规则窗体制作
- 2013.11.30《JAVA开发工具问题》
- Android 程序框架设计
- google probuf源码分析之descriptor
- 计算机常用英语
- MySQL主从服务器配置
- 使用setmask实现不规则窗体
- 学生成绩管理系统
- hadoop2.0 distcp checksum mismatch
- <linux+qt>使用thread监控串口通信(二)
- 编译安装Nginx
- Linux Crontab 定时任务 命令详解
- 面向对象的编程(学习笔记1)
- Maven学习九:依赖-dependency
- cocos2d-x 项目创建