Qt基本画板框架

              

                 

在Qt下面,以QMainWindow为主框架,QMenuBar或者QMenu为菜单栏,QToolBar 为工具栏,QWindget为绘图区,下面是QStatusBar为状态栏,

QWinget为绘图区,所有的图形绘制都要在这里面进行(暂时没有学习后面的东西)

QMainWindow下面可以直接添加QMenuBar,QMenu

QMainWindow添加QToolBar

QMainWindow设置QWinget区域。

QMainWindow设置QStatusBar。

QToolBar显示并做出命令响应需要添加QAction的action对象。、action对象设置Icon或者ToolBar文字显示,

Action对象发出Signal(信号),由QMainWindow的slot(槽)接受,

此时并不能显示,QMainWindow的Slot(槽)接受信号的同时,激活QMainWindow的信号,即为changeCurrentStatus(改变现在状态的信号),此信号再连接QWinget的Slot,QWinget的Slot接收到信号之后产生QWinget的事件,即绘图,此时的画出的Line和或者Rectangle才会显示。

QWinget窗口绘制图形需要override(重写)

Void  PaintEvent(QPaintEvent *)函数,重写该函数需要直接与QPaint类打交道,QPaint函数就是Qt中用来绘图的函数,细节就不多讲。 

但是这里还有一个问题,即QWinget每次绘图是将窗口里面所有内容重绘,即此时产生的事件是只绘制一个Line或者Rectangle,但是图片上要显示的要包括以前绘制的图形,所以需要一个QList保存以前绘制的图形,然后每次绘制的时候将以前的都重新绘制一遍,而且顺序要和以前一样。

还有一个问题就是基本的c++的问题,QList的里面保存的对象到底是Line还是Rectangle如果还有其他的图形如Ellipse,那到底应该是哪一种,这个就是c++的多态性了,

C++中将Line,Rectangle和Ellipse还有其他的图形抽象为

Class Shape  Shape设置为虚基类,添加绘制图形的虚函数

Public:

Void  virtual  paint(QPaint &painter);

下面画出几个类之间的关系图。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值