2013-04-16 71 views
0

我已經嘗試了我所知道的一切(這當然不是很多),並搜索谷歌約一個小時,但我無法弄清楚這一點。itemDoubleClicked信號爲QListWidgetItem的子類

我有一個叫做PlaceHolder的類,它繼承自QListWidgetItem。我希望能夠註冊雙擊,所以我嘗試使用QListWidget上的信號itemDoubleClicked(QListWidgetItem*)。但是,當我這樣做時,我需要一個具有相同參數的插槽。如果我不需要訪問被點擊的PlaceHolder的函數/變量,但這樣做不會成爲問題。

如果還有其他東西需要了解以幫助我,請隨時提問。感謝您花費在這個問題上的任何時間和精力。

回答

1

我對你的問題有點不清楚。問題是你有一個QListWidgetItem *而不是一個PlaceHolder *?

嘗試:

void MyWidget::handleDoubleClickSlot(QListWidgetItem* item) 
{ 
    PlaceHolder* placeHolderItem = qobject_cast<PlaceHolder*>(item); 

    if (placeHolderItem == NULL) 
    { 
     // oops, not a PlaceHolder item 
     return; 
    } 

    placeHolderItem->myAwesomePlaceHolderMethod(); 
} 

如圖所示,它將如果該項目在某種程度上不是一個佔位符對象返回NULL。

+0

感謝您的快速響應,但我收到錯誤消息:'沒有匹配的函數調用'qobject_cast(QListWidgetItem *&)''。我弄錯了什麼部分? – KFox

+0

嗯,你是否像上面用尖括號首先圍繞「PlaceHolder *」輸入了它,然後是括號?你需要包含某些東西的「#include 」,但是在小部件中應該包含那些... – darron

+0

謝謝,我忘記了項目周圍的括號。我的錯。 – KFox