Qt模拟全屏播放鼠标隐藏显示效果

15 篇文章 0 订阅

.h文件

#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <QWidget>
#include <QMouseEvent>
#include <QTimer>

class MyWidget : public QWidget
{
    Q_OBJECT

public:
    MyWidget(QWidget *parent = 0);
    ~MyWidget();

protected:
    void paintEvent(QPaintEvent *event);
    void mouseMoveEvent(QMouseEvent *event);
    void resizeEvent(QResizeEvent *event);
private:
    QWidget* dlg1;
    QWidget* dlg2;
    QTimer m_timer;

public slots:
    void OnTimerOut();

};

#endif // MYWIDGET_H

.cpp文件

#include "MyWidget.h"
#include <QPainter>
#include <QGridLayout>
#include <QHBoxLayout>
#include <QImage>
#include <QApplication>
#include <QPushButton>

MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
{
    setStyleSheet("background-color:rgba(60, 60, 60);");
    dlg1 = new QWidget(this);
    dlg1->setGeometry(0,0,this->rect().width(),40);
    dlg1->setStyleSheet("background-color:rgba(75, 75, 75,200);");
    dlg2 = new QWidget(this);
    dlg2->setGeometry(0, this->rect().height() - 100, this->rect().width(), 100);
    dlg2->setStyleSheet("background-color:rgba(75, 75, 75,200); ");

    QHBoxLayout *lay = new QHBoxLayout(dlg2);
    QPushButton* btn = new QPushButton("pushbutton",dlg2);
    btn->setFixedSize(80, 30);
    QSpacerItem *spce1 = new QSpacerItem(20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding);
    QSpacerItem *spce2 = new QSpacerItem(20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding);
    lay->addSpacerItem(spce1);
    lay->addWidget(btn);
    lay->addSpacerItem(spce2);
    dlg2->setLayout(lay);

    this->setMouseTracking(true);
    //this->setWindowFlags(Qt::FramelessWindowHint);

    //用于隐藏鼠标
    m_timer.setInterval(2000);
    connect(&m_timer, SIGNAL(timeout()), this, SLOT(OnTimerOut()));

}

MyWidget::~MyWidget()
{
}

void MyWidget::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event);

    QPainter p(this);
    p.setPen(Qt::NoPen);
    p.setBrush(Qt::white);
    p.drawRect(rect());

    //QImage img("C:\\Users\\conglin\\Desktop\\7.png");
    //p.drawImage((rect().width() - img.width())*0.5, (rect().height() - img.height())*0.5, img);
    //p.drawImage(rect(), img);
}

void MyWidget::OnTimerOut()
{
    QApplication::setOverrideCursor(Qt::BlankCursor);
}

void MyWidget::mouseMoveEvent(QMouseEvent *event)
{
    QApplication::setOverrideCursor(Qt::ArrowCursor);
    if (dlg1->geometry().contains(event->pos()))
    {
        dlg1->setVisible(true);
        m_timer.stop();
    }
    else
    {
        dlg1->setVisible(false);
        if (!m_timer.isActive() && !dlg2->isVisible())
        {
            m_timer.start();
        }
    }

    if (dlg2->geometry().contains(event->pos()))
    {
        dlg2->setVisible(true);
        m_timer.stop();
    }
    else
    {
        dlg2->setVisible(false);
        if (!m_timer.isActive() && !dlg1->isVisible())
        {
            m_timer.start();
        }
    }
}

void MyWidget::resizeEvent(QResizeEvent *event)
{
    dlg1->setGeometry(0, 0, this->rect().width(), 40);
    dlg2->setGeometry(0, this->rect().height()-100, this->rect().width(), 100);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值