QT实现的不规则窗口,是根据图片的形状显示

1.去标题栏

2.设置窗口背景为透明色

3.最后给窗口设置背景色

注:背景图为镂空的 格式为.png

图片资源下载:http://pan.baidu.com/s/1i5JkIot

.h

 #ifndef QANORMALYDLG_H
#define QANORMALYDLG_H #include <QWidget>
#include "ui_qanormalydlg.h" class QAnormalyDlg : public QWidget
{
Q_OBJECT public:
QAnormalyDlg(QWidget *parent = );
~QAnormalyDlg(); void paintEvent(QPaintEvent *e); void mousePressEvent(QMouseEvent *e); void mouseMoveEvent(QMouseEvent *e);
private:
Ui::QAnormalyDlg ui; QPoint move_point; //移动的距离
}; #endif // QANORMALYDLG_H

.cpp

 #include "qanormalydlg.h"
#include <QPainter>
#include <QMouseEvent> QAnormalyDlg::QAnormalyDlg(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this); //去表框 同时保留窗口原有的属性
setWindowFlags(Qt::FramelessWindowHint | windowFlags() );

//把窗口背景设为透明
setAttribute(Qt::WA_TranslucentBackground);

resize(,);
} QAnormalyDlg::~QAnormalyDlg()
{ } void QAnormalyDlg::paintEvent(QPaintEvent *e)
{
QPainter p(this);
p.drawPixmap(, , QPixmap("122.png"));
} void QAnormalyDlg::mousePressEvent(QMouseEvent *e)
{
if (e->button() == Qt::RightButton)
{
//右键关闭窗口
close();
} else if (e->button() == Qt::LeftButton)
{
//求坐标差,当前鼠标坐标 - 窗口左上角坐标
//frameGeometry返回窗口的矩形坐标, topLeft返回窗口左上角点的坐标
//move_point = e->globalPos() - this->frameGeometry().topLeft();
move_point = e->globalPos() - this->pos();
}
} void QAnormalyDlg::mouseMoveEvent(QMouseEvent *e)
{
if (e->buttons() & Qt::LeftButton)
{
move(e->globalPos()-move_point);
}
}

效果:

QT笔记之不规则窗口的实现的更多相关文章

  1. QT笔记之自定义窗口拖拽移动

    1.QT自定义标题栏,拖拽标题栏移动窗口(只能拖拽标题,其他位置无法拖拽) 方法一: 转载:http://blog.sina.com.cn/s/blog_4ba5b45e0102e83h.html . ...

  2. QT:不规则窗口的实现

    主要思路:1:将窗体设为Qt::FramelessWindowHint(去掉标题栏).2:用一幅有部分区域是透明的图片作为程序的界面,并将图片透明的地方设为穿透. 3:重载程序的鼠标事件. 运行时截图 ...

  3. QT笔记之实现阴影窗口

    方法一: 代码实现 在窗口构造函数中加入:setAttribute(Qt::WA_TranslucentBackground),保证不被绘制上的部分透明 重写void paintEvent(QPain ...

  4. QT笔记之VS2010 Qt中导入qrc资源文件

    转载1:http://qimo601.iteye.com/blog/1404693 转载2:http://blog.sina.com.cn/s/blog_92cde3060101lobm.html 转 ...

  5. Windows SDK 实现不规则窗口介绍

    不规则窗口在程序界面设计中能提供非常好的用户体验,以下是我程序运行时的效果图: 以下是代码,注意需要修改一些简单的位置,如资源ID,项目的头文件等,这些是根据你创建的win32程序的项目名改变的,我的 ...

  6. Qt全屏显示窗口、子窗口的相关函数

    Qt全屏显示函数         window.showFullScreen() Qt最大化显示函数         window.showMaximized() Qt最小化显示函数         ...

  7. Qt控制台和带窗口的区别_mickelfeng_新浪博客

    Qt控制台和带窗口的区别_mickelfeng_新浪博客     t控制台和带窗口的区别    (2012-04-30 10:50:53)    标签:    杂谈        分类: C/C    ...

  8. Qt创建停靠悬浮窗口

    1.Qt实现窗口停靠和悬浮使用类QDockWidget,它有两个重要方法用来设置停靠特性以及停靠区域, dw1->setFeatures(QDockWidget::DockWidgetMovab ...

  9. 3dsmax不同版本 pyside qt UI 设置max窗口为父窗口的方法

    3dsmax不同版本 pyside qt widget 设置 max 窗口为父窗口的方法 前言: 3dsmax 在 2014 extension 之后开始集成 Python 和 PySide,但是在版 ...

随机推荐

  1. cms修改栏目单页样式错位调整

    if (dt.Rows[0]["ClassTemplet"].ToString().Trim() == "") { rows_key.Style.Value = ...

  2. Java碎片知识(笔记)

    1.在java中有goto,但这只是保留字,并不能使用(const也是).在eclipse中的报错信息为”Syntax error on token "goto", throw e ...

  3. css:使用笔记(不断更新中...)

    1,inline-block Inline :1是不支持宽高的 2 在一行内显示 span 啥的~ Block:1,占一行 2支持宽高 但是img因为在一行并排显示,我们归为行(内嵌)元素,但支持设置 ...

  4. deleteRow

    如果是删除某一行的话,直接delete就可以,行数要在删除之前剪掉,否则会崩溃. 但是,如果section要减一的话,是不能删掉section的 Terminating app due to unca ...

  5. css使input中的值自动变大写

    <style type="text/css"> input { text-transform:uppercase; } </style>

  6. tensorflow 学习(一)

    改系列只为记录我学习 udacity 中深度学习课程!! 1. 整个课程分为四个部分,如上图所示. 第一部分将研究逻辑分类器,随机优化以及实际数据训练. 第二部分我们将学习一个深度网络,和使用正则化技 ...

  7. tomcat的maxThreads、acceptCount(最大线程数、最大排队数)

    转载:http://blog.sina.com.cn/s/blog_605f5b4f01012ljj.html tomcat 的Connector配置如下 <Connector port=&qu ...

  8. iOS:集成支付宝支付

    一.介绍 支付宝的集成还是比较简单的,按照文档来一步步操作,基本上很顺利.不过,仍然有两个地方会是坑.这里我集成成功了,在此整理一下.说先说一下我遇到的坑如下: 第一个坑:下载的SDK文件AliPay ...

  9. Docker的私有仓库

    server 192.168.1.107   registry   ---push client 192.168.1.103                 --pull [192.168.1.107 ...

  10. LUA语言注意点归集

    统计元素个数接口--只计算以整数为下标的 第一段连续元素的数目 #tab 和 table.getn() http://ju.outofmemory.cn/entry/29450 我们修改table: ...