我怀疑运行qmake可能会解决您的问题.每次添加或删除Q_GADGET或Q_OBJECT宏时,请记住重新运行qmake,以使moc工具重新生成元数据的代码.
通过查看我在代码中没有发现任何问题,因此我将代码复制粘贴到我的机器上并构建并运行它.在我为NObject构造函数添加实现后,它构建好了.我在Qt5和Qt4上构建并成功运行它,程序在控制台上打印出Exception.
Qt 5:
> ~/temp/qgadgettest$ qmake --version QMake version 3.0 Using Qt version 5.2.1 in /usr/lib/i386-linux-gnu > /temp/qgadgettest$ ./qgadgettest Exception
Qt 4:
> ~/temp/qgadgettest$ qmake-qt4 --version QMake version 2.01a Using Qt version 4.8.6 in /usr/lib/i386-linux-gnu > ~/temp/qgadgettest$ ./qgadgettest Exception