我有一個QListWidget
,我使用它我們的圖像過濾器的列表,這個過濾器是通過上下文菜單添加和我重新實現contextMenuEvent,我有2個上下文菜單:addfilter菜單和deletefilter菜單,當我添加過濾器,我只是添加項目到列表中是這樣的:得到正確版本的項目在qt
MenuFiler::MenuFiler()
{
Laplace = new QAction("Laplace" , this);
QObject::connect(Laplace , SIGNAL(triggered()) , this , SLOT(LaplaceSlot()));
QObject::connect(this, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, `SLOT(ManageControls(QListWidgetItem*))); // to show controls for clicked item`
.
.
.
}
void MenuFiler::LaplaceSlot()
{
this->addItem("Laplace");
}
現在其他功能我檢查是否有項目我得到這個項目的文本和此過濾器創建控件,我不喜歡這樣
void MenuFiler::ManageControls(QListWidgetItem*item)
{
if (item->text() == "Laplace")
{
if (_laplacianeffect.get() == NULL)
{
_laplacianeffect = unique_ptr<Laplacianeffect> (new Laplacianeffect());
}
_laplacianeffect.get()->show();
}
.
.
// etc
}
和控件只是一些按鈕,並滑動ers鏈接到qframe,我在這裏沒有問題。 我的問題是,當我想創建一個向量來保存例如重複的效果,用戶添加此過濾器qListWidget表示過濾器列表:
拉普拉斯 其他效果 拉普拉斯
,所以我會做這樣的事情
void MenuFiler::LaplaceSlot()
{
_laplacianeffect.push_back(new Laplacianeffect());
this->addItem("Laplace");
}
如何我檢測女巫過濾器選擇
void MenuFiler::ManageControls(QListWidgetItem*item)
{
if (item->text() == "Laplace")
{
// what is the code that i should use to detect witch effect id is selected)
_laplacianeffect.at(filterid).show()
}
}
感謝您的回覆,但我想在運行時檢測到doubleclick事件,任何幫助 – user2091592
因此,當您將項目插入到您的QListWidget中時,使用'item-> setData(...)'來保存(for例如)一個指向包含參數的Laplacianeffect類的指針。當用戶選擇該項目時,可以使用'item-> data(...)'檢索指針並獲取實際參數。 – Hossein