在 debug 模式下运行程序过程中,程序输出中会提示 No such slot 和 No such signa。 已知一个类如果要用到信号和槽,需要在类定义中加 Q_OBJECT 宏。和书上代码做对比后 发现确实少了这个宏。
添加 Q_OBJECT 宏后,运行构建,提示有错误。除了几个信号和槽函数的错误外,另外有 “undefined reference to `Spreadsheet::staticMetaObject‘” 这个错误提示。这个应该是 moc 这个东西出问题了。搜索了一下,在 StackOverflow 上有一个类似问题。回答中指出: “Remember to re-run qmake every time you add or remove Q_GADGET or Q_OBJECT macro to get moc tool to re-generate code for meta data.” 执行 qmake后 再执行构建,问题消除。