qt画图实验报告Word文档格式.docx

上传人:b****5 文档编号:20941184 上传时间:2023-01-26 格式:DOCX 页数:7 大小:17.37KB
下载 相关 举报
qt画图实验报告Word文档格式.docx_第1页
第1页 / 共7页
qt画图实验报告Word文档格式.docx_第2页
第2页 / 共7页
qt画图实验报告Word文档格式.docx_第3页
第3页 / 共7页
qt画图实验报告Word文档格式.docx_第4页
第4页 / 共7页
qt画图实验报告Word文档格式.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

qt画图实验报告Word文档格式.docx

《qt画图实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《qt画图实验报告Word文档格式.docx(7页珍藏版)》请在冰豆网上搜索。

qt画图实验报告Word文档格式.docx

MainWindow(QWidget*parent):

  QMainWindow(parent),

  ui(newUi:

MainWindow)

  {

  ui->

setupUi(this);

  setWindowTitle(tr("

Qt绘图板"

));

  setFixedSize(700,500);

//主窗口大小设为700*500

  area=newPaintArea;

  scrollArea=newQScrollArea;

  scrollArea->

setBackgroundRole(QPalette:

Dark);

//scrollArea对象的背景色设为DarkscrollArea->

setWidget(area);

//将画布添加到scrollArea中

widget()->

setMinimumSize(800,600);

//scrollArea初始化大小设为800*600

dockWidget->

hide();

  setCentralWidget(scrollArea);

//将scrollArea加入到主窗口的中心区

  isSaved=false;

  curFile=tr("

未命名.png"

);

  creatColorComboBox(ui->

penColorComboBox);

//画笔颜色组合框

brushColorComboBox);

//填充颜色组合框

  }

~MainWindow()

  deleteui;

  voidMainWindow:

changeEvent(QEvent*e)

  QMainWindow:

changeEvent(e);

  switch(e->

type()){

  caseQEvent:

LanguageChange:

retranslateUi(this);

  break;

  default:

doOpen()

  if(maybeSave())

  QStringfileName=QFileDialog:

getOpenFileName(this,

  tr("

打开文件"

),QDir:

currentPath());

  if(!

fileName.isEmpty())

  area->

openImage(fileName);

resize(area->

getImageSize());

  //获得图片的大小,然后更改scrollArea的大小

  isSaved=true;

  curFile=fileName;

doNew()

  if(maybeSave())

  DoNewDialogdlg;

  if(dlg.exec()==QDialog:

Accepted)

  intwidth=dlg.getWidth();

  intheight=dlg.getHeight();

setImageSize(width,height);

resize(width,height);

setImageColor(dlg.getBackColor());

  boolMainWindow:

maybeSave()

  if(area->

isModified())

  QMessageBox:

StandardButtonbox;

  box=QMessageBox:

warning(this,tr("

保存文件"

),tr("

图片已经改变,是否保存?

"

),QMessageBox:

Yes|QMessageBox:

No|QMessageBox:

Cancel);

  if(box==QMessageBox:

Yes)

  returndoFileSave();

  elseif(box==QMessageBox:

Cancel)

  returnfalse;

  returntrue;

doFileSave()

  if(isSaved)

  returnsaveFile(curFile);

  elsereturndoFileSaveAs();

saveFile(QStringfileName)

saveImage(fileName,"

png"

))

篇二:

C++实验报告-QTPaintPad

  《面向对象程序设计与C++》实验报告

  报告创建时间:

篇三:

QT实验五QT绘图基础实验

  QT绘图基础实验

  

(一)编程绘图实现显示时钟窗口

  使用定时器和QPAINTER类绘制时钟,包括使用刷子、画笔、定义坐标旋转、刻度定义、画线等函数,完成时钟实时显示。

  定义一个GUI工程,包含下列文件:

  源文件analogclock.h代码

  classAnalogClock:

publicQWidget

  Q_OBJECT

  public:

  AnalogClock(QWidget*parent=0);

  protected:

  voidpaintEvent(QPaintEvent*event);

  };

  源文件main.cpp代码

analogclock.h"

  intmain(intargc,char*argv[])

  QApplicationa(argc,argv);

  AnalogClockclock;

  clock.show();

  returna.exec();

  源文件AnalogClock.cpp代码

  AnalogClock:

AnalogClock(QWidget*parent)

QWidget(parent)

  QTimer*timer=newQTimer(this);

  connect(timer,SIGNAL(timeout()),this,SLOT(update()));

  timer->

start(1000);

AnalogClock"

  resize(200,200);

  voidAnalogClock:

paintEvent(QPaintEvent*)

  staticconstQPointhourHand[3]={

  QPoint(7,8),

  QPoint(-7,8),

  QPoint(0,-40)

  staticconstQPointminuteHand[3]={

  QPoint(0,-70)

  QColorhourColor(127,0,127);

  QColorminuteColor(0,127,127);

  intside=qMin(width(),height());

  QTimetime=QTime:

currentTime();

  QPainterpainter(this);

  painter.setRenderHint(QPainter:

Antialiasing);

  painter.translate(width()/2,height()/2);

  painter.scale(side/200.0,side/200.0);

  painter.

setPen(Qt:

NoPen);

  painter.setBrush(hourColor);

  painter.save();

  painter.rotate(30.0*((time.hour()+time.minute()/60.0)));

painter.drawConvexPolygon(hourHand,3);

  painter.restore();

  painter.setPen(hourColor);

  for(inti=0;

i  painter.drawLine(88,0,96,0);

  painter.rotate(30.0);

  painter.setPen(Qt:

  painter.setBrush(minuteColor);

  painter.rotate(6.0*(time.minute()+time.second()/60.0));

painter.drawConvexPolygon(minuteHand,3);

  painter.setPen(minuteColor);

  for(intj=0;

j  if((j%5)!

=0)

  painter.drawLine(92,0,96,0);

  painter.rotate(6.0);

  运行后的效果如下:

  思考:

如何添加代码实现秒指针的显示?

  painter.setPen(QColor(0,55,223));

  painter.rotate(6.0*time.second());

  painter.drawLine(0,0,0,-90);

  

(二)画棋程序

  使用画图事件处理鼠标绘制点击过程,使用了画笔、刷子、画线、画圆及坐标计算等方法,完成下棋程序。

(基类是QWidget类)

  源文件widget.cpp代码

widget.h"

ui_widget.h"

  Widget:

Widget(QWidget*parent):

  QWidget(parent),

Widget)

  structCHESS{

  structCHESS*next;

  intx;

//横坐标

  inty;

//纵坐标

  intcolor;

//颜色

  }*cur=(CHESS*)malloc(sizeof(CHESS)),*p,*q=cur;

  intcount=0;

~Widget()

  voidWidget:

paintEvent(QPaintEvent*event){

  intc;

  painter.setBrush(QBrush(Qt:

yellow,Qt:

SolidPattern));

//将笔刷设置成黄颜色

  painter.drawRect(0,0,256,256);

//调用矩形函数画背景

  painter.setPen(QPen(Qt:

black,1));

//设置画笔为黑色,宽度是1for(inti=1;

i  {painter.drawLine(16,16*(i),240,16*(i));

  painter.drawLine(16*(i),16,16*(i),240);

  painter.drawEllipse(16*4-3,16*4-3,6,6);

//利用画圆函数带入相应参数

  painter.drawEllipse(240-16*3-3,240-16*3-3,6,6);

  painter.drawEllipse(16*4-3,240-16*3-3,6,6);

  painter.drawEllipse(240-16*3-3,16*4-3,6,6);

  painter.drawEllipse(16*8-3,16*8-3,6,6);

  p=cur->

next;

  c=count;

  while(count!

=0)

  {if(p->

color==0)

black,Qt:

//设置黑色的笔刷

black);

//设置黑色的画笔

  else

white,Qt:

//设置白色的笔刷

white);

//设置白色的画笔

  painter.drawEllipse(16*p->

x-3,16*p->

y-3,6,6);

//带入棋子的大小参数,和坐标点

  p=p->

  count--;

  count=c;

mousePressEvent(QMouseEvent*event){

  QPointpoint=event->

pos();

//获取点击位置

  intx=qRound(float(point.x())/16);

  inty=qRound(float(point.y())/16);

  CHESS*abc=(CHESS*)malloc(sizeof(CHESS));

  abc->

x=x;

y=y;

  if(count%2==0)

color=0;

color=1;

  q->

next=abc;

  q=abc;

  count++;

  update();

  源文件widget.h代码

  #ifndefWIDGET_H

  #defineWIDGET_H

  #include

  namespaceUi{

  classWidget;

  classWidget:

  explicitWidget(QWidget*parent=0);

~Widget();

  private:

  Ui:

Widget*ui;

  voidmousePressEvent(QMouseEvent*event);

};

  #endif//WIDGET_H

  运行后的效果如下图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1