0

我有一个函数,我在 QGraphicsView 上的场景中绘制一个椭圆,在另一个函数中,我有一个单击事件,检查您是否单击了与椭圆相同的 XY,然后遍历地图以查看该 XY如果返回的是该对象,则分配给特定对象

但是,我一直在寻找一种方法,以便当单击椭圆时,它只会绑定数据,而不必搜索 xy 等来查找数据

我找到了 setdata 函数,它允许您将数据分配给一个项目,但是看到我的函数只是绘制和添加数据我不知道如何实际提取它的数据,我有一种感觉,因为我需要添加一个项目是一个场景,数据应该绑定到项目,但我不知道那是怎么做的,搜索文档没有给我任何答案

这是我的功能

void GUI::paintDot(double x, double y, double Id)
{
    // Decalre a QPen for Painting dots
    QPen pen;

    // set the pen colour
    pen.setColor(Qt::white);

    if(x < m_height && y < m_width)
    {
        // Add ellipse at the x y position passed in
        scene2->addEllipse(x, y, 1.5, 1.5, pen, QBrush(Qt::SolidPattern))->setData(0, Id);
    }
}

0 只是一个任意键值,需要更改为实际表示键值的东西,但为了这个例子,它很好

4

1 回答 1

0

您没有显示您试图取回数据的代码例如,在缓存鼠标按下或其他东西的事件处理程序中)。所以我不肯定你的问题实际上是什么,但它应该很简单:

QVariant v = ellipseObject->data(0);

然后根据您输入的数据类型从中提取您的值。在您的情况下,您输入一个双精度:

 double d = v.toDouble();

(显然这两行可以组合而不需要 variable v

于 2013-05-01T16:27:55.287 回答