Qt 使用QGraphicsView如何显示自己定义QGraphicsItem
小弟正在学习Qt画图(Qt版本4.8.1),最初使用QPainter直接在QMainWindows上绘图,继而是QGraphicsView视图框架,我在网上看了很多关于QGraphicsView、QGraphicsScene和QGraphicsItem框架文章,但大都是众说一词、换汤不换药,总体上可以理解三者之间的关系,但是当实际编写代码时问题就来了:
@一@.首先,我使用图形编辑器往主窗口上拖了一个QGraphicsView(取名 my_view)控件,在主程序窗口的某一个事件处理函数中声明了一个: QGraphicsScene my_scene;
然后添加代码:
my_sence.addText("Test");
ui->my_view->setScene(&my_scene);
接着开始调试,于是主窗体的QGraphicsView正中央显示出字符串“Test”。再接着,我声明了一个:
QPixmap my_image;
接着,往QPixmap中加载图片:
my_image.load("d:\\test.png");
注释掉之前的 my_sence.addText("Test") 后,在其下一行添加了代码行:
my_sence.addPixmap(my_image);
其他的不作更改,按F5,主窗体的QGraphicsView正中央显示出图片“test.png”;
这些都没有什么问题。接下来,我想利用QGraphicsItem绘图。
@二@.接着,我自定义了一个MyItem的类,继承自QGraphicsItem,重新能够实现了两个虚函数:
QRectF boundingRect()const;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
boundingRect的返回值为QRectF(0,0,400,400);
我在paint函数中简单的使用 painter->drawLine(0,0,200,200)画一条直线。
仿照 @一@ 的描述,我使用了如下代码:
MyItem item;
my_sence.addItem(&item);
my_view.setScene(&my_scene);
调试之后发现窗口的QGraphicsView里面什么都没有,这是为什么呢?是不是我还有没有实现的虚函数?或者是我调用的方法不对还是其他什么原因呢?