/* * Copyright (C) 2019~2022 偕臧 All rights reserved. * * Author: XMuli xmulitech@gmail.com * * GitHub: https://github.com/XMuli * Blog: https://ifmet.cn * CSDN: https://blog.csdn.net/qq_33154343 */ #include "widget.h" #include #include #include #include #include #include Widget::Widget(QWidget *parent) : QWidget(parent) { setFocusPolicy(Qt::StrongFocus); QDesktopWidget *desktop = QApplication::desktop(); // 获取桌面的窗体对象 const QRect geom = desktop->geometry(); // 多屏的矩形取并集 setWindowFlags(Qt::FramelessWindowHint /*| Qt::WindowStaysOnTopHint */| windowFlags()); // 去掉标题栏 + 置顶 // setAttribute(Qt::WA_ShowWithoutActivating,true); // setFocusPolicy(Qt::StrongFocus); // setFixedSize(QSize(geom.size().width() / 4, geom.size().height())); setFixedSize(QSize(512, geom.size().height())); setMouseTracking(true); } Widget &Widget::instance() { static Widget m_instance; return m_instance; } void Widget::getScrnShots() { // QWidget::setFocus(); show(); } Widget::~Widget() { } void Widget::keyPressEvent(QKeyEvent *event) { if (event->key() == Qt::Key_Escape) { qDebug() << "Key_Escape"; hide(); //close(); // 销毁会有问题,已经排查:1. tray 有关,改用 qpushbutton 和 close即可; 2.单例有关,该市建议修改为 new 指针的比较合适 } else if (event->key() == Qt::Key_A) { qDebug() << "Key_A"; } } void Widget::mouseMoveEvent(QMouseEvent *event) { m_pos = event->globalPos(); update(); } void Widget::paintEvent(QPaintEvent *event) { QPainter pa(this); pa.drawText(100, 200, QString("m_pos(%1, %2)").arg(m_pos.x()).arg(m_pos.y())); }