Qt绘图详解

要在一张画布上画图形步骤:

1、 先要建立一个图片视图的主窗口 如工程名为BeautyView建好之后应该是这样的

包括工程文件,源文件,和界面文件。

2、 自己定义一个自己的画布类 如类名为Mycanvas它继承于QObject类,它的基类是

QGraphicsScene(绘图场景)类。创建如下图:

填好之后下面就直接下一步就行了。创建好了应该是这样的

3、 改变中央窗口的类,

打开之后在这个位置改

成这样,则centralWidget是QSplitter类的对象。

QSplitter控件经常做为布局管理器使用,给用户提供更多的界面控制。自己试试就知道它的好处了。

4、 现在有了自己的画布,下面在画布上添加视角按钮控件,直接点开界面文件可以看到:

在右边选择这个绘图视角按钮 拖3个放到放到窗口里面

成功是这样的:

分别点击每个视角更改名字,

名字改为后 其中第一个为normalView 正常视角第二个为scaleView 放大视角

第三个为rotationView 倒置视角。设置完后保存就行了。 5、 在主窗口中加上自己定义的画布:

在私有数据成员中定义一个画布类的对象 private:

Ui::MainWindow *ui; Mycanvas canvas; 这种就叫组合。

接着就要设置每个视角的属性: 在

下面写上

//每个视图以 “独立的” 视角观察 \同一个\ 画布

ui->normalView->setScene(&canvas); //正常视图

ui->scaleView->setScene(&canvas); //放大视图

ui->scaleView->scale(1.5,1.5); //放大1.5倍 可以改

ui->rotationView->setScene(&canvas);//旋转视图

ui->rotationView->rotate(90.0); //旋转90度 可以改

6、 先画一个椭圆

现在在mycanvas.h添加定义椭圆的类,QGraphicsEllipseItem。

protected:

QGraphicsEllipseItem ellipseItem; //定义一个圆 非抽象的子类

然后在mycanvas.cpp 里面去实现 这以后基本上就是这种模式:

// 通过绘图项的 setxxx()设置绘图属性

ellipseItem.setRect(80, 50, 100, 80); //圆点坐标 后面两个不相等为椭圆

ellipseItem.setBrush(QBrush(Qt::green));

addItem(&ellipseItem); //将椭圆添加到数据结构里面去

7、 上面对在画布上画一个椭圆的工作已经完成,下面就编译运行看一下效果:

这样一个椭圆就会出来了。

8、 下面实现在这个椭圆里面实现画一串字符: 方法一样:

现在在mycanvas.h添加定义椭圆的类,QGraphicsTextItem 然后定义自己的对象QGraphicsTextItem TextItem;

在mycanvas.cpp 里面在加上: TextItem.setPlainText(

QString::fromLocal8Bit(\捣蛋猪\)); TextItem.setX(ellipseItem.x()+90); //显示的位置 TextItem.setY(ellipseItem.y()+90);

addItem(&ellipseItem); //将椭圆添加到数据结构里面去

addItem(&TextItem); //将字符串添加到数据结构里面去 9、 然后编译看运行结果:

这样一串字符也画上去了。

下面可以做一个美女图片查看器:

要在画布上显示一张图片不能像上面显示简单图形那么简单了,本身图片是存放在文件夹中的,不是调用几个成员函数就能画出来的。 Qt提供了一种放法,就是将图片作为一种资源办法添加到模块中去(Beautyviewer)模块独立存在,这个资源里其实存的是图片文件的路径。 下面具体看程序怎么操作: 1、 添加资源:

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4