qt画图实验报告docWord文件下载.docx

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

qt画图实验报告docWord文件下载.docx

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

qt画图实验报告docWord文件下载.docx

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();

area->

setImageSize(width,height);

scrollArea->

resize(width,height);

setImageColor(dlg.getBackColor());

isSaved=false;

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)

{if(area->

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;

ipainter.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;

jif((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;

//颜色

(CHESS

}*cur=

*)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(int

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:

SolidPattern)

//设置黑色的笔刷

black);

//设置黑色的画笔}

else

white,Qt:

//设置白色的笔刷

white);

//设置白色的画笔}

painter.drawEllipse(16*p->

x-3,16*p->

y-3,6,

6);

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

p=p->

count--;

count=c;

mousePressEvent(QMouseEventevent){

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)abc->

color=0;

elseabc->

color=1;

q->

next=abc;

q=abc;

count++;

update();

源文件widget.h代码

#ifndefWIDGET_H

#defineWIDGET_H

namespaceUi{

classWidget;

classWidget:

explicitWidget(QWidget*parent=0);

~Widget();

private:

Ui:

Widget*ui;

voidmousePressEvent(QMouseEvent*event);

};

#endif//WIDGET_H

运行后的效果如下图

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

当前位置:首页 > 工程科技 > 机械仪表

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

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