在用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,
在Qt中,仅设置窗口透明无法捕获鼠标事件。通过结合使用QGraphicsScene和QGraphicsView,可以实现在透明窗口上处理鼠标点击事件。具体步骤包括窗口透明化、自定义QGraphicsView子类以重写鼠标事件,以及创建场景和视图。源码下载链接提供在CSDN。
订阅专栏 解锁全文
1518

被折叠的 条评论
为什么被折叠?



