The QUrl stuff was messing things up. Note: with this change, we'll have to stick to passing in absolute paths to buttleData.loadData().