kde/H-QML: GATE PASADO — reproducer QtQuick corre rc=0 offscreen
Capa 1 Qt6 completa y sellada: qtbase+qtshadertools+qtsvg+qtlanguageserver+ qtdeclarative(QtQuick full d23aba45)+ECM. h-qml-test.cpp (Window+Text via QtQuick) instancia la escena y sale rc=0 con offscreen+software backend. El motor QML —corazón de Plasma— probado end-to-end bajo el stack soberano dinámico musl/zig-cc. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Semantic delta
No definition changed: this change is text, documentation or data.
1 files · +27 −0
- scripts/kde/h-qml-test.cpp +27 −0
diff --git a/scripts/kde/h-qml-test.cpp b/scripts/kde/h-qml-test.cpp
new file mode 100644
index 00000000..e4b5cebd
--- /dev/null
+++ b/scripts/kde/h-qml-test.cpp
@@ -0,0 +1,27 @@
+// H-QML — reproducer del hito QML (ADR 0011, Capa 1). Carga QML inline (Window + Text vía QtQuick),
+// verifica que el engine instancia el árbol de objetos y corre el event loop. Compilado contra
+// qtbase+qtdeclarative sellados (dinámico/musl/zig-cc) y corrido con QT_QPA_PLATFORM=offscreen prueba
+// end-to-end que el motor QML/QtQuick — el corazón de Plasma — carga e instancia una escena.
+#include <QGuiApplication>
+#include <QQmlApplicationEngine>
+#include <QTimer>
+#include <cstdio>
+int main(int argc, char** argv) {
+ QGuiApplication app(argc, argv);
+ QQmlApplicationEngine engine;
+ const char* qml =
+ "import QtQuick\n"
+ "Window { visible: true; width: 320; height: 200; color: \"#222\"\n"
+ " Text { anchors.centerIn: parent; color: \"white\"; text: \"Hammer KDE — H-QML OK\" } }";
+ engine.loadData(QByteArray(qml));
+ if (engine.rootObjects().isEmpty()) {
+ std::printf("H-QML: FALLO — el engine no instanció el árbol QML\n");
+ return 2;
+ }
+ std::printf("H-QML: QML instanciado (Window+Text via QtQuick); plataforma=%s\n",
+ app.platformName().toUtf8().constData());
+ QTimer::singleShot(150, &app, &QGuiApplication::quit);
+ int rc = app.exec();
+ std::printf("H-QML: event loop terminó rc=%d\n", rc);
+ return rc;
+}