Pattern rules may or may not be used by make
depending on the weather or time of day (can you tell I don't like them?). Instead, turn them into static pattern rules by prefixing them with the list of targets you want them to apply to:
moc_file.cpp: moc_%.cpp: %.h
$(MOC) $< -o $@