After further testing, the issue isn't the "run in terminal" setting.
Instead, it seems that if I'm using the QtQuick/QML stuff, then QtCreator reports the following:
11:16:51: Starting /tmp/QmlTest/bin/QmlTest ...
11:16:51: Application finished with exit code 0.
i.e. it runs, but exits immediately, with no error code.
If I then ssh into my target and manually run the same binary, I see the expected output on the screen, and it doesn't exit until I kill it with ^C.
I don't see this issue if I run an QtWidget application.
The C++ launcher for the QmlTest application is below. The contents of the QML file doesn't seem to matter.
#include <QGuiApplication>
#include <QQuickView>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQuickView *view = new QQuickView;
view->setSource(QUrl(QLatin1String("qrc:/main.qml")));
view->show();
return app.exec();
}