我想知道在Qt对象中实现pimpl习惯用法的最简单方法。我想拥有的是这样的:
pimpl.h:
class B;
class A: public QObject {
B *b;
}
pimpl.cxx:
class B: public QObject {
}
现在,很明显,Qt不会通过B类来为它创建moc。如何处理?我希望明确地在.cxx中实现B.
答案 0 :(得分:4)
你可以创建一个包含B定义的pimpl-private.h,它只包含在pimpl.cxx中,而不是其他地方。然后你可以在这个标题上运行moc。
答案 1 :(得分:2)
可以通过添加
将代码放在.cpp文件中#inlude "pimpl.moc"
在" pimpl.cxx"的最后(!)并重新运行qmake。这将生成一个Makefiule规则,通过moc运行文件并将输出放入" pmipl.moc"所以一切都神奇地起作用。