The return of PittPatt 4

This is modeled as closely as possible on pp5.cpp. The only thing I cannot guarantee is functional is PP4Compare because I did not test it, everything seems to be working. Let me know if anything looks weird.
`QMap<QString,QVariant>` ==> `QVariantMap`