我有一个QListWidget
我使用它的图像过滤器列表,这个过滤器是通过上下文菜单添加的,我重新实现了 contextMenuEvent,我有 2 个上下文菜单:添加过滤器菜单和删除过滤器菜单,当我添加过滤器时,我只是将项目添加到列表中这 :
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
}
控件只是链接到 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()
}
}