• qt 5 小练习 创建无边框界面


           我们大家都知道QT5 自带的界面不是那么美观,并且每个软件我们都发现他们的边框是自定义的,所以我决定写一篇这样的博文,也许已经有许许多多篇大牛写的论文了,但我还是想写一篇记录自己的学习QT的历程

     

    首先,我们得在相应的构造函数中写入无边框的代码(例如博主想要mywidget变为无边框)

    setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);  

    //设置边框状态,没边框之后,必须要自己写一个鼠标事件来拖动它

    setMouseTracking(true); //打开鼠标跟踪事件

    我们要有三个函数,press,Release,以及move,还要有bool press; 判断是否按了鼠标,以及QPoint start_pos;记录起始位置,QPoint end_pos;记录终点位置,而他们的差值就是我们要移动多远。例如起始位置是(0,0)终点位置是(200,300),那我们的无边框的界面就移动(200,300)个单位。最重要的事,必须初始化press=flase;因为你刚开始没按鼠标。


    void mywidget::mousePressEvent(QMouseEvent *e)
    {
    press = true;
    start_pos=e->pos();
    }
    void mywidget::mouseMoveEvent(QMouseEvent *e)
    {
    if(press)
    {
    QPoint end_pos = e->globalpos();
    //在移动的过程中,坐标一直在变,只有当鼠标松开的时候,press变为false,坐标确定,开始移动窗口
    this->move(end_pos-start_pos);
    }
    }
    void mywidget::mouseReleaseEvent(QMouseEvent *)
    {
    press=false; //用来结束mouseMoveEvent中的坐标变化,确定终点坐标
    }

        作者:Ten10

       参考资料来源于百度。属于博主原创,转载请注明出处

  • 相关阅读:
    sqlserver 保留2位小数的写法
    Kettle 数据预览 乱码
    finereport 数据分析预览 居中 参数分割 自动查询
    Unable to locate value meta plugin of type (id)
    mysql8.0
    MySQL 搭建MHA高可用架构
    Java性能调优工具
    helm 部署etcd
    阿里云pv 使用
    ldconfig 引起的事故
  • 原文地址:https://www.cnblogs.com/Ten10/p/Ten16.html
Copyright © 2020-2023  润新知