Qt窗口像QQ在屏幕顶端自动隐藏

Github个人博客:https://joeyos.github.io

###1.头文件声明

    /* 记录窗口当前的位置 */
    void enterEvent(QEvent *);
    void leaveEvent(QEvent *);
    QPoint StartPos;
    QPoint EndPos;
    QPoint mousePos;

###2.获取屏幕信息

    QDesktopWidget *desktopwidget = QApplication::desktop();
    QRect deskrect = desktopwidget->availableGeometry();
    //QRect screenrect = desktopwidget->screenGeometry();
    //打印屏幕信息
    //int scrcount = desktopwidget->screenCount();//屏幕个数
    //qCritical("deskrect.w==%s\t",qPrintable(QString::number(deskrect.width())));
    //qCritical("deskrect.h==%s\t",qPrintable(QString::number(deskrect.height())));
    //qCritical("screenCount==%s\t",qPrintable(QString::number(scrcount)));

###3.边界隐藏函数

//边界隐藏
void Widget::enterEvent(QEvent *)
{//鼠标进入
    QRect rc;
    QRect rect;
    rect = this->geometry();
    rc.setRect(rect.x(),rect.y(),rect.width(),rect.height());
    if(rect.top()<0)
    {
        int i;
        //rect.setX(rc.x());
        //rect.setY(0);
        for(i=0;i<400;i++)//小于500-2即可,否则不断出现
        {
            move(rc.x(),-2+i-400);
            Sleep(1);
        }
        //move(rc.x(),-2);
    }
    else if(rect.right()>deskrect.width())
    {
        int i;
        for(i=0;i<700;i++)//小于750-2
        {
            move(deskrect.width()-750+2-i+700,rc.y());//只显示一点边
            Sleep(1);
        }
    }
    //===============左边上边同时小于零出错,有待解决=============
}
void Widget::leaveEvent(QEvent *)
{//鼠标离开
    QRect rc;
    QRect rect;
    rect = this->geometry();
    rc.setRect(rect.x(),rect.y(),rect.width(),rect.height());//左上角x,左上角y,宽,高
    if(rect.top()<0)
    {
        int i;
        for(i=0;ideskrect.width())
    {
        int i;
        for(i=0;i<750;i++)
        {
            move(deskrect.width()+i-750-5,rc.y());//只显示一点边
            Sleep(1);
        }
    }
}

此博客均属原创或译文,欢迎转载但请注明出处
Github个人博客:https://joeyos.github.io

你可能感兴趣的:(Qt)