当前位置:文档之家› 基于某LinuxQT图形图像课程设计

基于某LinuxQT图形图像课程设计

科技学院QT课程设计题目制作画图工具学生专业班级学号所在系指导教师完成时间年月日目录1概述 (1)1.1项目名称 (1)1.2 画图工具基本框架 (1)1.3 画图工具功能介绍 (2)1.3.1菜单 (2)1.3.2线型选择 (3)1.3.3画笔宽度 (3)1.3.4画笔颜色 (3)1.3.5清空画板 (3)1.3.6绘制图形 (3)1.3.7橡皮擦 (3)1.3.8坐标定位 (3)1.4 制作画图工具使用的编程语言 (4)1.5 编译环境 (4)1.6 使用QT编程语言制作画图工具的优势 (4)1.7 项目制作过程中应用到的QT知识 (4)1.7.1信号与槽 (4)1.7.2对话框 (4)1.7.3创建主窗口 (4)1.7.5布局管理 (5)1.7.6 QT中的事件机制 (5)1.7.7二维图形的绘制 (5)1.8 项目中建立的类 (5)1.9 类之间的相互关系 (5)2 总体设计 (6)2.1 主窗口 (6)2.1.1创建主窗口 (6)2.1.2添加菜单 (6)2.1.3添加子菜单 (6)2.1.4创建状态栏 (7)2.2 悬浮窗 (7)2.2.1线型选项 (7)2.2.2画笔宽度调节 (8)2.1.3画笔颜色选择 (8)2.2.4清空画板 (9)2.2.5绘制图形 (9)2.2.6橡皮擦 (9)2.3 画板 (10)2.3.2画布的颜色初始化 (10)2.3.3画板大小 (10)3 详细设计 (10)3.1 子菜单功能的实现 (10)3.1.1 New功能的实现 (10)3.1.2 Open 功能的实现 (11)3.1.3 Save 功能的实现 (11)3.1.4 SaveAs 功能的实现 (12)3.2 悬浮窗各个功能的实现 (13)3.2.1 Style功能的实现 (13)3.2.2 Width 功能的实现 (14)3.2.3 Color 功能的实现 (14)3.2.4 Clear 功能的实现 (16)3.2.5 绘图功能的实现 (16)3.2.6 eraser 功能的实现 (17)3.3 鼠标形状设置 (17)3.4 坐标位置显示功能的实现 (17)结束语 (18)致谢 (19)参考文献 (20)1 概述1.1 项目名称制作画图工具1.2 画图工具基本框架运行结果如下图:图1.1图1.2图1.3图1.4 1.3 画图工具功能介绍1.3.1 菜单图1.21.FileA.New(新建)B.Open(打开一个图片)C.Save(保存)D.SaveAs(另存为)E.Exit(退出)图1.32.HelpA.About(查看有关本工具的信息)1.3.2 线型选择A.SolidlineB.DotlineC.Dashline1.3.3 画笔宽度Width:可手动调节画笔宽度1.3.4 画笔颜色Color:可手动选择画笔颜色1.3.5 清空画板Clear:手动清空整个画板1.3.6 绘制图形1.矩形rectangle2.圆角矩形roundrectangle3.椭圆ellipse(当按着Shift键绘制时为圆形)4.弦chord5.线line1.3.7 橡皮擦Eraser:宽度可选1.3.8 坐标定位状态栏:可以显示鼠标所在位置坐标(图1.4)状态栏1.4 制作画图工具使用的编程语言基于Linux的嵌入式QT1.5 编译环境Qt Creator1.6使用QT编程语言制作画图工具的优势QT具有可以让编程人员灵活运用而且独特于其他编程语言的信号—槽机制,尤其是在本项目制作过程当中遇到的一些棘手问题,当我们使用信号—槽机制来解决的时候,很容易发现,那些原本复杂的问题将变得如此简单。

1.7 项目制作过程中应用到的QT知识1.7.1 信号与槽1.信号与槽的定义2.信号与槽的关联3.需要注意的问题1.7.2 对话框Qt消息框1.7.3 创建主窗口1.QMain Window 类2.创建主窗口的方法和流程3.菜单和子菜单的创建1.7.4 自定义窗口部件1.QWidget类2.从QWidget中派生1.7.5 布局管理1.垂直布局2.水平布局3.网格布局1.7.6 QT中的事件机制1.鼠标事件2.键盘事件1.7.7 二维图形的绘制1.QPainter类的应用2.图像的装载3.图像的保存4.坐标变换5.QImage类应用6.QT打印图形1.8 项目中建立的类1.Controlbox类2.Drawwidget类3.MainWindow类1.9 类之间的相互关系Controlbox类:创建悬浮窗的各个控件(线宽、画笔颜色、清空等等)Drawwidget类:创建画板MainWindow类:主窗口○1主窗口调用Controlbox类和Drawwidget类设定整个画图工具的外部框架。

○2运用信号-槽机制关联Controlbox类和Drawwidget类中的函数以及MainWindow类和Controlbox类中的函数。

○3事件机制的实现2 总体设计2.1 主窗口2.1.1创建主窗口一般情况下,建立一个QT工程必须要有一个主窗口,而且仅有一个主窗口,所有需要实现的功能,在交互界面中必须在此窗口的基础上来实现,这样才使得整个工程的建立得以实现其自身价值。

一个最简单的主窗口,没有菜单栏,没有工具栏,没有状态栏。

在此我们首先创建一个最简单的主窗口。

2.1.2 添加菜单仅仅创建一个最简单的主窗口除了它所存在的基本框架以外没有任何其他的意义,所以要想实现画图工具所有的功能,接下来就要为主窗口添加菜单项,这是为下一步的循序渐进做铺垫。

添加两个菜单项:1.File 2.HelpFile是文件菜单,任何一个关于事物的操作无非都是面向文件,所以文件菜单是一个必不可少的菜单项。

fileMenu=menuBar()->addMenu(tr("&File"));Help菜单项是关于软件版本的相关信息。

helpMenu=menuBar()->addMenu(tr("&help"));2.1.3 添加子菜单单单添加菜单项是无法完成任何操作的,在QT里面,每一个事件的完成要么是依靠信号-槽机制进行关联,要么是通过事件机制来连接。

在这里,我们首先添加子菜单,以方便之后借着信号-槽机制实现相应的功能。

添加五个子菜单:1.NewnewAct=new QAction(QIcon(":/new/prefix1/image/new.PNG"),tr("&New "),this);2.OpenopenAct=new QAction(QIcon(":/images/open.png"),tr("&Open..."),this);3.SavesaveAct=new QAction(QIcon(":/new/prefix1/image/save.PNG"),tr("&Save "),this);4.SaveAssaveAsAct=new QAction(tr("Save&As..."),this);5.ExitexitAct=new QAction(tr("E&xit"),this);2.1.4 创建状态栏状态栏是为了显示用户当前操作时的信息,使机器更加人性化。

void MainWindow::setMousePosDisplay(int x, int y){QString str = "(" + QString::number(x) + "," +QString::number(y) + ")";statusBar()->showMessage(str);}2.2 悬浮窗悬浮窗只是一个外部的架构,只有通过信号-槽机制将控件与槽函数相关联才能够达到真正的目的。

2.2.1 线型选项Style:是一个标签,用于表明右边的ComboBox是一个关于线型选择的组合框。

ComboBox里添加有子项,各种线型,比如Solidline 、Dotline、Dashline 等等。

只需要手动选择其中的一个类型即可实现一种不同线型绘制图形。

实现代码如下:styleLabel=new QLabel("style");gridLayout->addWidget(styleLabel,0,0);styleComboBox=new QComboBox;styleComboBox->addItem(tr("SolidLine"),static_cast<int>(Qt::SolidLine)); styleComboBox->addItem("DashLine",static_cast<int>(Qt::DashLine)); styleComboBox->addItem("DotLine",static_cast<int>(Qt::DotLine)); styleComboBox->addItem("DashDotLine",static_cast<int>(Qt::DashDotLine));styleComboBox->addItem("DashDotDotLine",static_cast<int>(Qt::Dash DotDotLine));gridLayout->addWidget(styleComboBox,0,1,1,2);2.2.2 画笔宽度调节Width是一个标签,用于表明它的右边是一个关于线宽调节的QSpinBox。

可以通过点击QSpinBox上下箭来实现画笔宽度的调节。

代码实现如下:widthLabel = new QLabel("Width");widthSpinBox = new QSpinBox;widthSpinBox->setValue(1);gridLayout->addWidget(widthLabel,1,0);gridLayout->addWidget(widthSpinBox,1,1,1,2);2.2.3 画笔颜色选择图2.1通过单击Color右侧的快速存取按钮弹出图2.1对话框,选择其中的颜色之后,单击OK即可选择有效画笔颜色。

相关主题