Сигналы/слоты класса шаблона C++ Qt

Итак, я хотел бы создать класс template в C++ Qt. Проблема в том, что я использую signals/slots в этом классе.

Заголовок моего класса выглядит так

template <class T>
class Container : public QObject
{
    Q_OBJECT

protected:
    QVector<T*> vec;

public:
    Container();
    ~Container(void);

    int getSize() const;

    T * operator[] (int);
    T * operator() (int);
    void operator <<(T*);
    void operator >>(T*);

    bool exists(T*);

signals:
    void updateTable();
    void updateTable(int,int);
    void sizeSignal(int);

public slots:
    void insert(T*);
    void insert(int, T*);

    void edit(QTableWidgetItem*);

    void remove(int);
};

Как заставить это работать?

Пробовал что-то вроде этого:

template <class T>
class Container : public ContainerSignalsSlots
{

public:
    Container();
    ~Container(void);

    int getSize() const;

    T * operator[] (int);
    T * operator() (int);
    void operator <<(T*);
    void operator >>(T*);

    bool exists(T*);
};

class ContainerSignalsSlots : public QObject
{
    Q_OBJECT

protected:
    QVector<T*> vec; 

signals:
    void updateTable();
    void updateTable(int,int);
    void sizeSignal(int);

public slots:
    void insert(Class1*);
    void insert(int, Class1*);
    void insert(Class2*);
    void insert(int, Class2*);

    void edit(QTableWidgetItem*);

    void remove(int);
};

Но как мне быть с QVector?


person Yonji    schedule 23.01.2017    source источник
comment
Вы не можете легко сделать QObject классом шаблона. Однако вы можете использовать эту небольшую хитрость, чтобы обойти это ограничение.   -  person Dmitry    schedule 23.01.2017
comment
@Dmitry Видел это, но что тогда делать с QVector? Я должен объявить отдельный QVector для каждого типа класса? ContainerSignalsSlots и Container нуждаются в доступе к QVector.   -  person Yonji    schedule 23.01.2017
comment
Вы можете, например, сделать слоты чисто виртуальными в ContainerSignalsSlots и реализовать их в Container. Таким образом, вам нужно будет получить доступ только к QVector в Container.   -  person Dmitry    schedule 23.01.2017
comment
Ответ очевиден, используйте альтернативную реализацию сигнала/слота, а не Qts.   -  person user1095108    schedule 07.06.2017