It internally does: QUrl::fromLocalFile(package.filePath("ui", fileName)) Which is neither documented nor particularly reasonable because one could opt to not have a ui subdir at all. I'd deprecate it and make a new push2() which doesn't fiddle with the path at all so callers have to explicitly pass in ui/foo.qml if foo is in ui/.