画像用のフィルタのリストを使用していQListWidget
ます。このフィルタはコンテキスト メニューによって追加され、contextMenuEvent を再実装しました。2 つのコンテキスト メニューがあります。addfilter メニューと deletefilter メニューです。フィルタを追加すると、これ :
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()
}
}