Qt中绘制五子棋棋盘

一个需要做大作业的同学问我相关内容,就顺手写了一个,贴出来。

项目包含头文件 mainwindowh,源文件mainwindow.cpp和主函数main.cpp。

如下:

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QWidget>
#include <QPainter>

class MainWindow : public QWidget
{
  Q_OBJECT

public:
  MainWindow(QWidget *parent = 0);
  ~MainWindow();
  const int SIZE=10;
  const int WIDTH=40;
  const int x=20,y=20;
private slots:

private:
  void paintEvent(QPaintEvent *);//绘图函数声明
  //void mousePressEvent(QMouseEvent *);
  QPainter *paint;
};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
  : QWidget(parent)
{

}

MainWindow::~MainWindow()
{

}
void MainWindow::paintEvent(QPaintEvent *)
{
  paint=new QPainter;
  paint->begin(this);//主窗口

  paint->setPen(QPen(Qt::darkGreen,2,Qt::SolidLine));//钢笔工具:颜色,线号,实线
  //画SIZE+1条横线
  for(int i=0;i<SIZE+1;i++)
    {
      paint->drawLine(x,y+WIDTH*i,x+WIDTH*(SIZE),y+WIDTH*i);//画线函数:x1,y1,x2,y2:画从(x1,y1)到(x2,y2)的线
    }
  //画SIZE+1条竖线
  for(int i=0;i<SIZE+1;i++)
    {
      paint->drawLine(x+WIDTH*i,y,x+WIDTH*i,y+WIDTH*(SIZE));
    }
  //在棋盘正中做一个黑棋子
  paint->setBrush(QBrush(Qt::black,Qt::SolidPattern));//毛刷:颜色,实图案
  paint->drawEllipse((SIZE+0.5)*WIDTH/2,(SIZE+0.5)*WIDTH/2,WIDTH/2,WIDTH/2);//画椭圆:中心点X,Y,宽度,高度
  paint->end();
}

main.cpp

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
  QApplication a(argc, argv);
  MainWindow w;
  w.show();

  return a.exec();
}
原文地址:https://www.cnblogs.com/cielosun/p/5654513.html