Qt Graphics View Framework 图形视图框架
2016-03-24 21:19
531 查看
QT的2D绘图我们使用QPainter实现少量绘图是很理想的,但是如果是要绘制大量的2D图形并且需要能够控制管理时就会显得力不从心。
好在QT视图体系提供了QGraphics View Framework的框架。使用这个框架可以将各图形项进行单独或分组的控制管理。
它包含三个大类:QGraphicsItem 项类(或者叫做图元类),QGraphicsScene 场景类,和 QGraphicsView 视图类。QGraphicsItem是在场景中的图形项,QGraphicsScene相当于容器包含和管理QGraphicsItem。项类通过QGraphicsScene::addItem(),(QGraphicsScene::add*())被加入到Scene。QGraphicsView是个视图窗体部件。我们可以将scene绑定到view。并且一个scene可以被绑定到多个view中。
QGraphicsScene scene;
myPopulateScene(&scene);
QGraphicsView view(&scene);
view.show();
QGraphicsScene是一个图形项的集合,它包括三层:背景层background layer, 项层item layer 和前景层foreground layer。可以通过重新实现drawBackground() drawForeground() 来控制背景层和前景层。
这个体系使用三种不同的坐标系统——项坐标,场景坐标和视口坐标(Item coordinates, scene coordinates, and view coordinates.)。
下面看一个简单的例子具体如何使用:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QGraphicsScene scene;
QGraphicsView view(&scene);
view.show();
// add a rectangle item
scene.addRect(QRectF(-10, -10, 20, 20));
// a white semi-transparent foreground
scene.setBackgroundBrush(Qt::yellow);
// a grid foreground
scene.setForegroundBrush(QBrush(Qt::lightGray, Qt::CrossPattern));
return a.exec();
}
官方Example中有许多例子相关的例子,可以查看学习。
FROM: http://blog.csdn.net/xuguangsoft/article/details/8578042
好在QT视图体系提供了QGraphics View Framework的框架。使用这个框架可以将各图形项进行单独或分组的控制管理。
它包含三个大类:QGraphicsItem 项类(或者叫做图元类),QGraphicsScene 场景类,和 QGraphicsView 视图类。QGraphicsItem是在场景中的图形项,QGraphicsScene相当于容器包含和管理QGraphicsItem。项类通过QGraphicsScene::addItem(),(QGraphicsScene::add*())被加入到Scene。QGraphicsView是个视图窗体部件。我们可以将scene绑定到view。并且一个scene可以被绑定到多个view中。
QGraphicsScene scene;
myPopulateScene(&scene);
QGraphicsView view(&scene);
view.show();
QGraphicsScene是一个图形项的集合,它包括三层:背景层background layer, 项层item layer 和前景层foreground layer。可以通过重新实现drawBackground() drawForeground() 来控制背景层和前景层。
这个体系使用三种不同的坐标系统——项坐标,场景坐标和视口坐标(Item coordinates, scene coordinates, and view coordinates.)。
下面看一个简单的例子具体如何使用:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QGraphicsScene scene;
QGraphicsView view(&scene);
view.show();
// add a rectangle item
scene.addRect(QRectF(-10, -10, 20, 20));
// a white semi-transparent foreground
scene.setBackgroundBrush(Qt::yellow);
// a grid foreground
scene.setForegroundBrush(QBrush(Qt::lightGray, Qt::CrossPattern));
return a.exec();
}
官方Example中有许多例子相关的例子,可以查看学习。
FROM: http://blog.csdn.net/xuguangsoft/article/details/8578042
相关文章推荐
- Qt,从控件的一个综合性例子开始
- QT 鼠标事件 键盘事件 的属性
- 第一个Qt程序 Helloworld
- Qt之模型/视图(自定义按钮)
- Qt之模型/视图(自定义按钮)
- 解决QT使用mysql编译时不能连接数据库的问题
- 解决qt调试时Unknown debugger type "No Engine"(转载)
- 基于qt的五子棋 人人对战 人机对战 程序与程序对战
- Qt之QTableView显示富文本
- Qt之QTableView显示富文本
- QT 让生成文件更干净
- QT FTP上传,下载文件
- ubuntu下qt5提示can not find -lGL
- Qt使用QGraphicsView实现滑动窗体效果
- QItemSelectionModel获取QModelIndexList后出错
- QT SQL Driver not loaded的问题
- QT4迁移QT5注意事项
- QT信号槽传递参数技巧
- Qt之QHeaderView自定义排序(获取正确的QModelIndex)
- Qt之QHeaderView自定义排序(获取正确的QModelIndex)