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

1. 主界面效果


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

2.思路分析

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

3.代码分析

3.1 创建主界面

主界面stylesheet:

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

最小化按钮stylesheet:

QPushButton
{   
	border-image: url(:/images/minimize.png);
    background:transparent; 
}
QPushButton:hover { background-color: rgb(25, 127, 204); }
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

你可能感兴趣的:(qt,Qt斗地主,C++游戏开发)