クラスの関数をスロットにするには、クラスはQObjectから継承する必要があります。ただし、QObjectは非常に大量のメモリを消費します。それがいくらで、メモリが各クラスまたは各オブジェクト用であるかどうかはわかりません。私のコードには多くの小さなデータがあり、その関数はいつかスロットになる可能性があります。クラスの関数を使うときに一時的にスロットにする方法があるのだろうか。使用後、スロットコストのメモリは削除されます。次のコードは、要件を示しています。
class SmallData // size of 2 or 3 integers.
{
public:
virtual void F(); // use it as a slot.
virtual QMenu* createMenu(); // use this to create the context menu with
// an action connected to F()
...
};
// use the small data
vector<SmallData> vec(1000000); // the vector is put at a tree view. When an
// item in the tree view is selected, a context
// menu pop up with an action to run F().
SmallData* data = treeView.selectedItem();
connect(action, SIGNAL(triggered()), data, SLOT(F())); // How to make F() to be
// a slot just here.
// The action is from
// data->createMenu().