클래스의 기능을 슬롯으로 만들려면 클래스가 QObject에서 상속해야합니다. 그러나 QObject는 상당히 많은 양의 메모리를 차지합니다. 얼마나 많은지, 메모리가 각 클래스 또는 각 객체에 대한 것인지 여부는 확실하지 않습니다. 내 코드에는 함수가 슬롯이 될 수있는 많은 작은 데이터가 있습니다. 클래스의 함수를 사용할 때 시간 함수 적으로 슬롯을 만드는 방법이 있는지 궁금합니다. 사용 후 슬롯 비용 메모리가 삭제됩니다. 다음 코드는 요구 사항을 보여줍니다.Qt에서 시간 함수로 슬롯을 만드는 방법은 무엇입니까?
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().
QObject가 상당히 많은 양의 메모리를 차지한다고 생각합니까? – aschepler
나는 그것을주의 깊게 체크했으나 체크하지 않았다. 메커니즘을 구현하기 위해 부모 포인터 및 기타 데이터가 있습니다. – user1899020
그건 불가능합니다. 또한 백만 개의 항목이있는 경우 사용자 지정 QAbstractItemModel 대신 항목 기반 모델을 사용하면 QObject뿐 아니라 병목 현상이 발생합니다. 단일 슬롯을 추가하고 선택한 SmallData 객체를 찾아보고 F()를 호출합니다. –