Как я могу заставить объект 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;
}
Другие вопросы по тегам