在用Qt做窗口透明处理时只设置窗口透明属性是接收不到鼠标事件的,想要在窗口透明的情况下去接收鼠标消息还需要依靠QGraphicsScene与QGraphicsView。具体的做法是:
一、先把窗口透明化:
//1. 设置窗口大小、样式
this->setGeometry(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); //设置窗口大小和屏幕大小一样
this->setWindowFlags(Qt::FramelessWindowHint); //设置无标题无边框窗口
this->setAttribute(Qt::WA_TranslucentBackground, true); //设置透明窗口
二、 继承QGraphicsView重写一个自己的类,因为要重写鼠标事件
#ifndef MYGRAPHICSVIEW_H
#define MYGRAPHICSVIEW_H
#include <QGraphicsView>
class MyGraphicsView : public QGraphicsView
{
Q_OBJECT
public:
MyGraphicsView(QGraphicsScene *scene, QWidget *parent = 0);
~MyGraphicsView(