一個需要做大作業的同學問我相關內容,就順手寫了一個,貼出來。
項目包含頭文件 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(); }