Qt:二维绘图类QGraphicsScene与QGraphicsView的关系

灰太狼 2022-10-25 01:18 345阅读 0赞

1、Scene是一个场景,View是一个视野。如果视图大于场景时,场景在中间部分显示[如果不设置视图的Alignment属性];如果视图小于场景,则只能看到场景的一部分,但是会自动提供卷滚条在整个场景中移动,同时也可以直接用鼠标拖动边框改变widget的大小

2、实例:新建一个QT GUI程序,选择基类Widget,取消创建界面。修改main.cpp

2.1、实例1:

  1. #include "widget.h"
  2. #include <QApplication>
  3. #include <QGraphicsView>
  4. #include <QGraphicsScene>
  5. int main(int argc, char *argv[])
  6. {
  7. QApplication a(argc, argv);
  8. QGraphicsScene scene;
  9. scene.addText("I love Qt programming", QFont("Times", 22, QFont::Bold));
  10. QGraphicsView view(&scene);
  11. view.show();
  12. return a.exec();
  13. }

145b734d0ecac9eccfae620c2a50da9b785.jpg

分析:场景大小=视图大小:中间完全显示[上下居中]

  1. #include "widget.h"
  2. #include <QApplication>
  3. #include <QGraphicsView>
  4. #include <QGraphicsScene>
  5. int main(int argc, char *argv[])
  6. {
  7. QApplication a(argc, argv);
  8. QGraphicsScene scene;
  9. scene.addText("I love Qt programming", QFont("Times", 22, QFont::Bold));
  10. QGraphicsView view(&scene);
  11. view.setAlignment(Qt::AlignLeft | Qt::AlignTop); //
  12. view.show();
  13. return a.exec();
  14. }

分析:场景大小=视图大小:设置左上对齐显示

996967d894038c370516b149d21d1b2582b.jpg

  1. #include "widget.h"
  2. #include <QApplication>
  3. #include <QGraphicsView>
  4. #include <QGraphicsScene>
  5. int main(int argc, char *argv[])
  6. {
  7. QApplication a(argc, argv);
  8. QGraphicsScene scene;
  9. scene.addText("I love Qt programming", QFont("Times", 22, QFont::Bold));
  10. QGraphicsView view(&scene);
  11. view.setAlignment(Qt::AlignLeft | Qt::AlignTop); //
  12. view.resize(20, 80);
  13. view.show();
  14. return a.exec();
  15. }

2051021b0acc1ce133c2a2e79f166f8d49e.jpg

分析:场景大小大于视图大小:只能看到一部分场景,但是会自动提供滚条用来转换视图

发表评论

表情:
评论列表 (有 0 条评论,345人围观)

还没有评论,来说两句吧...

相关阅读

    相关 QgraphicsScene

    概述 QgraphicsScene类为管理大量的2D图形item提供了一个管理界面,做为item的容器,它配合使用QgraphicsView使用来观察items,例如线,矩形