打游戏瞬狙的时候,觉得屏幕中间如果有一个红点就好了,猛然间意识到,我可是学过Qt的人,这点事我自己能实现的啊!
实现过程非常简单,不多说,效果如下:
上代码
新建项目起名为 AimPoint
-
图片
-
aimpoint.h
#ifndef AIMPOINT_H
#define AIMPOINT_H
#include <QWidget>
class AimPoint : public QWidget
{
Q_OBJECT
public:
AimPoint(QWidget *parent = nullptr);
protected:
void paintEvent(QPaintEvent *event) override;
private:
QPixmap pix;
};
#endif // AIMPOINT_H
- aimpoint.cpp
#include "aimpoint.h"
#include <QPainter>
#include <QApplication>
#include <QDesktopWidget>
#include <windows.h>
AimPoint::AimPoint(QWidget *parent)
: QWidget(parent)
{
setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
setAttribute(Qt::WA_TranslucentBackground,true);
setAttribute(Qt::WA_TransparentForMouseEvents, true);
pix.load(":/zhunxing.png");
resize(pix.size());
//获取桌面宽高
QRect screenRect = QApplication::desktop()->screenGeometry();
int screenWidth = screenRect.width();
int screenHeight = screenRect.height();
move((screenWidth-width())/2,(screenHeight-height())/2);
//设置窗口穿透
SetWindowLong((HWND)winId(), GWL_EXSTYLE, GetWindowLong((HWND)winId(), GWL_EXSTYLE) |
WS_EX_TRANSPARENT | WS_EX_LAYERED);
}
void AimPoint::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event)
QPainter paint(this);
paint.drawPixmap(0,0,pix);
}
- main.cpp
#include "aimpoint.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
AimPoint w;
w.show();
return a.exec();
}
成品
链接:https://pan.baidu.com/s/1K4reGoJrubLkhte16i4_XA
提取码:jfzg