zoukankan      html  css  js  c++  java
  • 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

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

  • 相关阅读:
    ViZDoom深度预测(Depth Prediction)
    刨根问底U3D---从Profile中窥探Unity的内存管理
    关于Android真机调测Profiler
    初探Stage3D(三) 深入研究透视投影矩阵
    初探Stage3D(二) 了解AGAL
    初探Stage3D(一) 3D渲染基础原理
    unity3d优化总结篇
    Unity数据存储路径总结
    CREATE A ENERGY / HEALTH BAR HUD
    CREATE A LOADING SCENE / SPLASH SCREEN
  • 原文地址:https://www.cnblogs.com/Ten10/p/Ten16.html
Copyright © 2011-2022 走看看