Как я могу заставить объект QMap выдавать сигнал при вызове `QMap::insert(...)`?
Довольно простой вопрос.
QMap
не наследует QObject
, поэтому я хотел бы знать, есть ли простой способ сделать это Qt emit mySignal(MyEnum state)
,
Если вы спрашиваете, почему я не просто излучаю сигнал в своем коде при вызове функции QMap::insert(...)
, потому что это сделано в шаблоне... который "" "я думаю" "" невозможен:
http://doc.qt.io/archives/qt-4.8/templates.html
Если это поможет, QMap
Объект, который я использую, является глобальным и будет использоваться между потоками.
1 ответ
Решение
Это просто:
class MyMap : public QObject
{
Q_OBJECT;
public slots:
void insert(... key, ... value)
{
_map.insert(key, value);
emit isInserted(key);
}
signals:
void isInserted(... key);
private:
QMap<..., ...> _map;
}