(16) 设置视图的场景 :

(17)对视图的坐标变换 :

++ 关于视图的坐标变换的再举例 :

(18) 作为对比,画家也可以进行坐标变换 :

(19)继续视图里的坐标变换 :

++以及 :

++矩阵变换是难点,结合了线性代数。 虽然任何坐标变换都可以用数学矩阵来准确描述 :

(20)挪场景中图形项到中间 :

++ 举例 :

(21) 滚动视图滚动条,使场景中某部分可见 :

++ 举例 :

(22) 调用视图的缩放与平移旋转成员函数,使场景中的某部分区域可见 :

++ 源码 :

(23) 从视图里拿到图案渲染到别的地方,由 painter 进行 :


++代码版举例 :
QGraphicsScene scene; //生成场景
scene.addItem(...
...
QGraphicsView view(&scene); //绑定到视图
view.show();
...
QPrinter printer(QPrinter::HighResolution);
printer.setPageSize(QPrinter::A4);
QPainter painter(&printer); //为打印机准备画家
// print, fitting the viewport contents into a full page
view.render(& painter);
// print the upper half of the viewport into the lower half of the page.
//QWidget * QAbstractScrollArea::viewport(); //继承于父类中的成员函数。
QRect viewport = view.viewport()->rect(); //图形视图的内容窗体的大小
view.render(& painter,
QRectF(0, printer.height() / 2, printer.width(), printer.height() / 2),
viewport.adjusted(0, 0, 0, - viewport.height() / 2)); //操作矩形
(24)以下开始 item 系列 :

++举例 :

(25)返回位于视图坐标系某点处的所有图形项 :

++测试 :

(26) 返回在矩形内,在多变形内,在绘图路径内的图形项 , 与在某点处的重载函数大同小异,不再举例了 :

(27)坐标映射 :

++以及 :

(28)本视图类的槽函数 :

(29)本类唯一的信号函数 :

++测试一下本信号函数里形参的含义 :

(30) 接着开始本类的 protected 成员函数,主要是一些事件处理函数 :

++以及 :

++以及 :

(31)
谢谢
3189

被折叠的 条评论
为什么被折叠?



