我有一个函数,我在一个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只是一个任意键值,需要更改为实际代表键值的东西,但为了这个例子,它很好
答案 0 :(得分:0)
您没有显示您尝试获取数据的代码 where (例如,在缓存鼠标按下的事件处理程序中)。所以我不是肯定你的问题实际上是什么,但它应该如此简单:
QVariant v = ellipseObject->data(0);
然后根据您输入的数据类型从中提取您的值。在您的情况下,您输入一个双倍:
double d = v.toDouble();
(显然这两行可以组合而不需要变量v
)