El artículo técnico publicado por KDAB el 4 de junio de 2026, firmado por Javier, aborda un problema habitual en el desarrollo con Qt Quick: cómo medir el tiempo que transcurre entre el instante en que un elemento QQuickItem se marca como visible y el momento en que efectivamente aparece dibujado en pantalla. Aunque Qt Quick solo renderiza fotogramas cuando es necesario y, técnicamente, no pierde fotogramas, sí puede mostrarlos más tarde de lo esperado, lo que algunos usuarios perciben como tirones o retardos. La propuesta del autor se basa en una subclase de QQuickItem llamada TimedItem, que parte de hacer que el componente no sea visible por defecto mediante setVisible(false) en el constructor de C++. Esta precaución es clave, ya que si la propiedad visible se inicializara directamente en false desde QML, el motor podría evaluar su valor óptimo como true, omitiendo el cambio y, con él, la señal visibleChanged necesaria para iniciar la medición. Cuando visible pasa a true, un slot activa un QElapsedTimer y conecta la señal QQuickWindow::afterFrameEnd. Para evitar mediciones prematuras provocadas por otros elementos animados de la escena, se llama a QQuickItem::ensurePolished, que fuerza el ciclo de pulido del componente. Dentro de updatePolish se activa una bandera que indica que el siguiente fotograma que se muestre corresponderá al elemento medido. De este modo, la lectura del temporizador solo se realiza cuando afterFrameEnd confirma que el fotograma adecuado ha sido renderizado. El artículo también explica la conversión de milisegundos a número entero de fotogramas: dado que la duración teórica de un fotograma es 1.000 ms dividido por la tasa de refresco de la pantalla (obtenida con QScreen::refreshRate), dividir el tiempo medido por ese valor y aplicar la función suelo permite obtener un recuento de fotogramas perdidos. En un programa bien optimizado, el resultado será 0, 1 o un entero muy cercano. El texto incluye el código completo en C++ de la clase TimedItem, con la propiedad Q_PROPERTY timeToDisplay, las conexiones a visibleChanged y afterFrameEnd, y los métodos privados startMeasuringTimeToDisplay, updatePolish y measure. El artículo cierra con una invitación a contactar con KDAB para servicios de consultoría, formación y desarrollo en Qt, C++ y Rust.
Cómo medir cuándo un QQuickItem se vuelve visible en Qt Quick
