中国象棋控件 v2.0.13
载入中...
搜索中...
未找到
FrmChineseChess.h
1#ifndef FRMCHINESECHESS_H
2#define FRMCHINESECHESS_H
3
4#include <QWidget>
5#include <QImage>
6#include <QPainter>
7#include <QDateTime>
8#include <QTranslator>
9
10#include "ChineseChess.h"
11#include "chinesechessqt_export.h"
12
13namespace Ui {
15}
16
23class CHINESECHESSQT_EXPORT CFrmChineseChess
24 : public QWidget, public CChineseChess
25{
26 Q_OBJECT
27 Q_PROPERTY(QString RedName READ GetRedName WRITE SetRedName)
28 Q_PROPERTY(QString BlackName READ GetBlackName WRITE SetBlackName)
29 Q_PROPERTY(QDateTime StartTime READ GetStartTime WRITE SetStartTime)
30 Q_PROPERTY(QDateTime EndTime READ GetEndTime WRITE SetEndTime)
31
32public:
33 explicit CFrmChineseChess(QWidget *parent = nullptr);
34 virtual ~CFrmChineseChess() override;
35
41 static int InitResource(const QString szLanguage);
43 static int CleanResource();
44
45 QDateTime GetStartTime();
46 int SetStartTime(const QDateTime &t);
47 QDateTime GetEndTime();
48 int SetEndTime(const QDateTime &t);
49 QString GetRedName();
50 int SetRedName(const QString &name);
51 QString GetBlackName();
52 int SetBlackName(const QString &name);
53
54 void AboutBox();
55
56protected:
57 virtual void mouseReleaseEvent(QMouseEvent *event) override;
58 virtual void paintEvent(QPaintEvent *event) override;
59 virtual void resizeEvent(QResizeEvent *event) override;
60
61protected:
62 virtual int onPromptSound(PROMPT_SOUND sound) override;
63 virtual int onPromptMessage(CGoRule::ENUM_ReturnValue val) override;
64
65 virtual int onCleanPrompt(int i, int j) override;
66 virtual int onDrawPrompt(int i, int j) override;
67 virtual int onGoChess(int i, int j, CPiece::ENUM_QiZi chess) override;
68
69Q_SIGNALS:
70 void sigGoChess(int i, int j, CPiece::ENUM_QiZi chess);
71
72private:
73 Ui::CFrmChineseChess *ui;
74
75 int m_QiPangStartX; //棋盘的开始横坐标
76 int m_QiPangStartY; //棋盘的开始横坐标
77 int m_QiPangDistance; //棋盘格的距离
78
79 QColor m_QiPangColor;
80 QColor m_TiShiBoxColor;
81
82 QImage m_QiPangPicture; //棋盘背景图片
83 //CPictureHolder m_QiPangPictureHolder; //棋盘背景图片的CPictureHolder对象
84
85 //棋子图片
86 QImage m_RedShuai; //红帅
87 QImage m_RedShi; //红仕
88 QImage m_RedXiang; //红相
89 QImage m_RedMa; //红马
90 QImage m_RedChe; //红车
91 QImage m_RedBing; //红兵
92 QImage m_RedPao; //红炮
93
94 QImage m_BlackShuai; //黑帅
95 QImage m_BlackShi; //黑仕
96 QImage m_BlackXiang; //黑相
97 QImage m_BlackMa; //黑马
98 QImage m_BlackChe; //黑车
99 QImage m_BlackBing; //黑兵
100 QImage m_BlackPao; //黑炮
101
102 QImage m_Chu;
103 QImage m_He;
104 QImage m_Han;
105 QImage m_Jie;
106 QImage m_KL;
107
108 //坐标转换
109 enum ENUM_ConvertCoordinate { XYToIJ, IJToXY };
110 bool ConvertCoordinate(long *x, long *y, int *i, int *j, ENUM_ConvertCoordinate eCC = XYToIJ);
111 bool SetQiPang(int width, int height);
112
113 //棋盘星位
114 enum ENUM_XINWEI { XinWei, Left_XinWei, Right_XinWei };
115 void DrawXinWei(QPainter *pPainter, int i, int j, ENUM_XINWEI xinwei = XinWei);
116 bool DrawTiShiBox(QPainter *pPainter, int i, int j);
117 int DrawQiZi(QPainter *pPainter, int i, int j, CPiece::ENUM_QiZi eQiZi);
118 void DrawQiPang(QPainter *pPainter, QRect rect);
119 int DrawPicture(QPainter *pPainter, int i, int j, QImage image, bool CHHJKL = false);
127 int DrawImage(QPainter *pPainter, QRect rect, QImage image);
134 int SetTransparentImage(QImage &image, const QColor& col = QColor(255, 255, 255));
141 int SetTransparentPixmap(QPixmap &pixmap, const QColor &col = QColor(255, 255, 255));
142};
143
144#endif // FRMCHINESECHESS_H
中国象棋类
PROMPT_SOUND
提示音
virtual int onPromptMessage(CGoRule::ENUM_ReturnValue val)=0
提示错误消息
virtual int onGoChess(int i, int j, CPiece::ENUM_QiZi chess)=0
走棋事件
virtual int onDrawPrompt(int i, int j)=0
画提示框
virtual int onCleanPrompt(int i, int j)=0
清除提示框
中国象棋窗体,完成中国象棋的界面