最近在网上看了一些QT的教学视频,就想着将学习的知识运用一下,学到绘图后就想着制作一个简易的中国象棋。目前只做出了棋盘,大概有点样子了。
本例使用的QWidget作为父类创建的加了UI的项目,但目前UI没怎么用,就图方便设置了一下Widget的Size。
Widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui {
class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
protected:
// 绘图事件
void paintEvent(QPaintEvent *) override;
// 鼠标按下,移动事件
void mousePressEvent(QMouseEvent *event) override;
void mouseMoveEvent(QMouseEvent*)override;
private:
Ui::Widget *ui;
QPoint point;
// 棋子大小 即 格子大小
int ChessSize;
};
#endif // WIDGET_H
Widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QPainter>
#include <QMouseEvent>
#include <QPen>
#include <QFont>
#include <QBrush>
#include <QColor>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
// 设置 棋子大小, 即格子大小
this->ChessSize = 50;
}
Widget::~Widget()
{
delete ui;
}
void Widget::paintEvent(QPaintEvent *){
QPen pen;
pen.setWidth(3);
pen.setColor(Qt::black);
QPainter p(this);
p.setPen(pen);
QBrush brush;
brush.setColor(QColor(216, 180, 80));
brush.setStyle(Qt::SolidPattern);
p