为什么QList不是从QObject派生的?

Rom*_*her 3 c++ collections qt qobject qlist

我想创建一个QObservableCollection包装器QList(使用内部QList实现和转发所有调用,同时为更改集合的函数发出某种CollectionsChanged信号),但我看到它QList不继承QObject.

我相信你需要继承QObject以发出Qt信号.所以我需要继承QObject我的QObeservableCollection.

但是QListQVector其他Qt系列并没有继承QObject,所以我想他们必须是某种下行或问题来制作一个集合.

我看到QSignalSpy继承自两者 QObject,QList<QList<QVariant>>所以也许他们只是没有看到继承QObject的理由?

cma*_*t85 5

有一个非常重要的技术原因:moc无法处理模板,这对于通用容器类型来说几乎是必需的.

  • 有解决方法(例如使用一个抽象的QObject超类声明所有信号和槽并创建一个模板化的子类,而不是声明实现它们的Q_OBJECT宏) (2认同)