• <三>Qt斗地主游戏开发:主界面初始化显示


    1. 主界面效果

    在这里插入图片描述
    效果关键点:
    1)拖动标题栏可实现主界面拖动
    2)logo图标名称及主界面背景
    3)最小化及关闭

    2.思路分析

      1)背景图片及logo图标的设定比较简单,通过stylesheet即可实现。通过QWidget的拖动即可实现这些设定。
      2)主界面可用QWidget控件来实现,继承QWidget类进行继承实现拖动、最小化、关闭按钮功能即可。

    3.代码分析

    3.1 创建主界面

    在这里插入图片描述

    主界面stylesheet:

    border-image: url(:/images/background.png);
    
    • 1

    最小化按钮stylesheet:

    QPushButton
    {   
    	border-image: url(:/images/minimize.png);
        background:transparent; 
    }
    QPushButton:hover { background-color: rgb(25, 127, 204); }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    3.2 主界面类
    #ifndef MOVEABLEFRAMELESSWINDOW_H
    #define MOVEABLEFRAMELESSWINDOW_H
    
    #include 
    #include 
    #include 
    /**
     * @brief 无边框窗体
     */
    class MoveableFramelessWindow : public QWidget
    {
        Q_OBJECT
    public:
        explicit MoveableFramelessWindow(QWidget *parent);
    
    protected:
        /**
         * @brief 鼠标按下,准备拖动窗体
         * @param event
         */
        void mousePressEvent(QMouseEvent *event);
    
        /**
        * @brief 鼠标移动,处理窗体拖动
        * @param event
        */
       void mouseMoveEvent(QMouseEvent *event);
    
       /**
        * @brief 释放鼠标
        * @param event
        */
       void mouseReleaseEvent(QMouseEvent *event);
    
    
        /**
         * @brief 获取可拖动控件,必须由子类指定
         * @return
         */
        virtual QWidget*getDragnWidget()=0;
    
        /**
         * @brief 判断鼠标点击的位置是否进入可拖动区域
         * @param widget 可拖动控件位置
         * @param point  鼠标点击位置
         * @return
         */
         bool isPointInDragnWidget(const QWidget*widget,const QPoint &point);
    
         /**
          * @brief 标志是否移动窗体
          */
         bool isMove;
    
         /**
           * @brief 鼠标按下去的点
           */
          QPoint pressedPoint;
    protected slots:
         //主题改变
         virtual void onThemeColorChange(QString colorStr){}
    signals:
    
    public slots:
    
    };
    
    #endif // MOVEABLEFRAMELESSWINDOW_H
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
  • 相关阅读:
    前端基础(四十六):你不知道的JavaScript - 元编程 - 公开符号
    华为Hcia-数通学习(更改策略)
    智慧能源解决方案-最新全套文件
    skynet中一条消息从取出到处理完整流程(协程调度源码刨析)
    海外服务器AS4837和AS4134S线路含义?怎么测试?
    试用阿里云GPU服务器进行深度学习模型训练
    shell 实例:检查default路由的存在
    Spark - 一文搞懂 parquet
    基于PSO优化VIC算法的WORM蠕虫检测matlab仿真
    hive分桶表创建教程
  • 原文地址:https://blog.csdn.net/m0_37251750/article/details/133830619