2013-01-23 120 views
0

我想使用先前創建的QMap在插槽內使用。我試過this,但它仍然沒有工作(我想我只是在做一些愚蠢的事情)。這是我正在使用的代碼。在插槽中使用QMap

構造:

QMap <int, QList<int> > tiles; 
connect(ui->lineEdit, SIGNAL(editingFinished()), this, SLOT(someSlot())); 

現在,每當我發出信號editingFinished,我想someSlot檢查,如果該值在QMAP並與各種條件出發,如果它是。問題是,我如何將QMap傳遞給插槽? Qt似乎不允許帶參數的插槽。

+0

插槽如何知道要使用的地圖? – cppguy

+0

你的意思是做一些像SomeSlot(瓷磚)?因爲那不適合我。 **錯誤:未定義模板的隱式實例化'QMap >' case 2:_t-> someSlot((* reinterpret_cast <'QMap >(*)>(_ a [1])) ); break; ** ^ – UzSh

回答

1

一個插槽只是一個由Qt調用的函數。它如何被稱爲魔術,但它只是一個功能。參數傳入信號(就像常規函數一樣),Qt最終將該參數(或更可能是該參數的一個副本)傳遞給接收方插槽。 Qt中存在邏輯,在定義連接時,您不必像插入信號那樣傳遞儘可能多的參數,但這不適用於本次討論。

您不能在像這樣的連接中按名稱傳遞參數。

你可以有你的磚對象的類,它實現someSlot(成員變量),或者你將不得不瓷磚傳遞給連接到someSlot信號(常量QMAP> &)

我的建議是使瓷磚成爲一個成員變量,而不是堆棧變量

+0

成員變量是在類中聲明的變量是否正確?因爲當我試圖做聲明'QMap >瓷磚;'我得到了錯誤'字段'瓷磚'具有不完整的類型「。對不起,如果它是一個愚蠢的錯誤,但它是什麼意思? – UzSh

+0

哦,我真的很笨。忽略這一點。無論如何,我現在有工作,謝謝。 – UzSh