2013-05-01 76 views
0

我有一個函數,我在一個QGraphicsView的場景繪製一個橢圓,在另一個函數中,我有一個點擊事件,檢查是否點擊了與橢圓相同的XY然後在地圖上迭代以查看如果該XY被分配給特定對象(如果該對象返回的話)如何將數據添加到橢圓QT

然而,iv一直在尋找一種方式,以便當單擊橢圓時它只有數據綁定到它而不是必須搜索xy等找到數據

我發現函數setdata,它允許您分配數據的項目,但看到我的功能只是繪製和添加數據我不知道如何actully提取數據Ť帽子cound它,我有一種感覺,因爲我需要添加一個項目,這是一個場景和數據應該綁定到項目,但我不知道如何做和搜索文檔沒有給我任何答案

我的繼承人功能

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

你不顯示的緣故代碼其中你正試圖獲取數據(例如,在一個事件處理程序緩存一個鼠標按或什麼)。所以我還不能肯定你的問題實際上是,但它應該是簡單的:

QVariant v = ellipseObject->data(0); 

然後你提取你的價值出來的,取決於你把數據類型在你的情況,你把。在雙:

double d = v.toDouble(); 

(顯然這兩條線可以,而不需要可變 v組合)