Qt4DataFormatter (custom Xcode data formatters for Qt4 objects)
I do most of my development on OS X, including Qt4 projects. Qt4 objects are particularly averse to inspection in the Xcode debugger. Fortunately, Xcode has a data formatter plugin API for displaying summaries of user defined objects. Unfortunately, the documentation isn't as complete as one would hope. The example program doesn't even compile. Through a bit of trial and error, I was able to create data formatters for some basic Qt4 objects. Included are:
- QString
- QVariant
- QModelIndex
- QFile
- QDomNode
- QDomElement
I'm adding other objects on an as needed basis. Adding other QObjects is trivial using the existing methods as a template. Basically, you just create a display message using a QString and standard Qt4 API's, then have the new data formatter function return the already implemented printQString(QString* str, int ID) method. For example, if we wished to create a summary for QObject's that displayed the QObject's classname, we would add a method to Qt4DataFormatter.cpp in the form of:
char* printQObject(QObject *obj, int ID)
{
QString result("ClassName: %1");
QString className("Undefined");
// make sure we have access to the plugin function list
if (NULL != _pbxgdb_plugin_functions ) {
className = ogj->metaObject()->className();
}
return printQString(result.arg(className), ID);
}
Recompile, then install (or link) the plugin to your:
~/Library/Application\ Support/Developer/Shared/Xcode/CustomDataViews/
or
/Developer/Library/Xcode/CustomDataViews/
It's that easy. The Qt4DataFormatter project is hosted on github. Please see the README for the project as well.
Comments !