Visión general de C++20
Qt 6 requiere oficialmente C++17, sin embargo estamos trabajando constantemente en soportar nuevas características del lenguaje C++ para hacer Qt más rápido y seguro, y proporcionar una mejor experiencia a nuestros usuarios.
Esta página ofrece un breve resumen de las características de C++20 disponibles en Qt.
Requisitos específicos de WebEngine y módulos
Mientras que Qt 6 sólo requiere un compilador compatible con C++17 en general, el módulo Qt WebEngine requiere un compilador compatible con C++20 debido a sus dependencias (como Chromium).
Si está compilando Qt WebEngine, asegúrese de que su compilador es totalmente compatible con C++20.
Consulte Qt WebEngine Platform Notes para conocer los requisitos detallados.
Soporte para std::chrono
Varias clases relacionadas con la fecha y la hora tienen soporte para las características de std::chrono de versiones anteriores de C++. Con la llegada de C++20, std::chrono ha añadido nuevos tipos de calendario, como year_month_day, además de representaciones de fecha y hora, como system_clock y sus tipos time_point. También proporciona acceso a la base de datos IANA de información relacionada con la zona horaria. Cuando Qt se construye con C++20, ahora puede hacer uso de estas adiciones.
QDate y QDateTime soportan ahora la conversión a y desde los distintos tipos de calendario, fecha y fecha-hora, junto con la adición de tipos de duración. QTimeZone soporta ahora la construcción a partir de una time_zone.
QTimeZone también puede, cuando se construye con la característica timezone_tzdb activada, utilizar las facilidades tzdb de C++20 en lugar de backends específicos de la plataforma para acceder a la información de la zona horaria. Esto sigue siendo experimental en Qt 6.9 ya que algunas implementaciones de la biblioteca estándar no representan fielmente los datos IANA para las zonas horarias.
QSpan - una versión Qt de std::span
La plantilla de clase std::span es una adición a la biblioteca estándar que proporciona una forma uniforme de acceder a una porción contigua de cualquier contenedor contiguo.
El uso de std::span en las API públicas de Qt podría proporcionar importantes ventajas. Sin embargo, Qt 6 sólo requiere C++17, lo que significa que no puede tener tipos C++20 en la API y la ABI.
Qt 6.7 introdujo QSpan - una versión Qt de std::span. La API de la clase es compatible con la versión std. QSpan y std::span pueden convertirse implícitamente entre sí. Sin embargo, existen algunas diferencias entre las clases. Consulte la sección correspondiente en QSpan class documentation para obtener más detalles.
Operador de comparación de tres vías
C++20 introdujo operator<=>(), también conocido como operador de comparación a tres bandas, y tres tipos de ordenación para representar los resultados de la comparación:
- std::strong_ordering;
- std::weak_ordering;
- std::partial_ordering.
En Qt 6.8, muchas de las clases QtCore obtuvieron soporte para operator<=>(). Para utilizar el nuevo operador, el proyecto de usuario debe compilarse en modo C++20.
Sin embargo, a partir de Qt 6.7, los usuarios de C++17 pueden utilizar nuestros propios equivalentes de los tipos de ordenación std.
Como característica del lenguaje C++20, no es posible retroportar operator<=>() a C++17, pero se puede utilizar la función Qt::compareThreeWay(), que actúa como una versión C++17 de operator<=>() para tipos C++ incorporados (como enteros, punto flotante y tipos de enumeración).
Qt también define funciones de ayuda compareThreeWay() para varias clases en QtCore. Todas ellas se implementan como amigos ocultos. Los usuarios pueden implementar sus propias funciones compareThreeWay() para tipos personalizados.
Por último, Qt proporciona una plantilla de función qCompareThreeWay(), que sirve como implementación genérica de comparación tripartita. En su implementación se basa en Qt::compareThreeWay() y en las funciones libres compareThreeWay() antes mencionadas.
Otras características importantes
Qt también ha adoptado algunas características más de C++20, como:
- Q_CONSTINIT macro que se expande a la palabra clave de C++20
constinit, o a atributos específicos del compilador si están disponibles - Q_NODISCARD_CTOR macro que se expande al atributo
[[nodiscard]]si el compilador soporta[[nodiscard]]en constructores - Q_NODISCARD_X y macros Q_NODISCARD_CTOR_X para
[[nodiscard("reason")]]
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.