Ну так видимо, до того, как до него доберется Qt. До создания QApplication.
Когда QApplication создано - мусор в командной строке еще торчит, И когда, по каким правилам оно его вычищает - хз
Судя по исходникам, аргументы удаляются в конструкторе QApplication
C++ (Qt)
void QApplicationPrivate::process_cmdline()
{
// process platform-indep command line
if (!qt_is_gui_used || !argc)
return;
int i, j;
j = 1;
for (i=1; i<argc; i++) { // if you add anything here, modify QCoreApplication::arguments()
if (argv[i] && *argv[i] != '-') {
argv[j++] = argv[i];
continue;
}
QByteArray arg = argv[i];
if (arg.startsWith("--"))
arg.remove(0, 1);
QString s;
if (arg == "-qdevel" || arg == "-qdebug") {
// obsolete argument
} else if (arg.indexOf("-style=", 0) != -1) {
s = QString::fromLocal8Bit(arg.right(arg.length() - 7).toLower());
} else if (arg == "-style" && i < argc-1) {
s = QString::fromLocal8Bit(argv[++i]).toLower();
#ifndef QT_NO_STYLE_STYLESHEET
} else if (arg == "-stylesheet" && i < argc -1) {
styleSheet = QLatin1String("file:///");
styleSheet.append(QString::fromLocal8Bit(argv[++i]));
} else if (arg.indexOf("-stylesheet=") != -1) {
styleSheet = QLatin1String("file:///");
styleSheet.append(QString::fromLocal8Bit(arg.right(arg.length() - 12)));
#endif
} else if (qstrcmp(arg, "-widgetcount") == 0) {
widgetCount = true;
} else {
argv[j++] = argv[i];
}
if (!s.isEmpty()) {
if (app_style) {
delete app_style;
app_style = 0;
}
styleOverride = s;
}
}
if(j < argc) {
argv[j] = 0;
argc = j;
}
}
C++ (Qt)
void QApplicationPrivate::construct()
{
initResources();
qt_is_gui_used = (application_type != QApplicationPrivate::Tty);
process_cmdline();
....
C++ (Qt)
#ifdef Q_QDOC
QApplication::QApplication(int &argc, char **argv)
#else
QApplication::QApplication(int &argc, char **argv, int _internal)
#endif
: QGuiApplication(*new QApplicationPrivate(argc, argv, _internal))
{ Q_D(QApplication); d->construct(); }
Эксперимент это подтверждает. -style test.qss исчез из аргументов, после создания экземпляра QApplication, до запуска очереди событий.