Qt para Windows - Cuestiones específicas
Esta página contiene información sobre Qt para Windows.
Ubicación de la instalación
Instalar Qt en un directorio con espacios, por ejemplo, C:\Program Files, puede causar problemas con qmake.
Instale Qt en un subdirectorio sin espacios para evitar este problema.
Longitud máxima de la ruta
La API Win32 que utilizan tanto Qt como las herramientas de compilación tiene incorporada una longitud máxima de ruta de archivo de 260 caracteres (MAX_PATH). Esto puede afectarle de varias formas si sus estructuras de directorio absolutas o relativas son demasiado verbosas. Por lo tanto, se recomienda mantener las rutas del sistema de archivos dentro de los límites, y poner los directorios de compilación cerca de los directorios de origen.
Visual Studio
Si experimentas problemas extraños con el uso de banderas especiales que modifican la alineación de los miembros de la estructura y de la unión (como /Zp2) entonces necesitarás recompilar Qt con las banderas establecidas para la aplicación también.
Ventanas a pantalla completa basadas en OpenGL
Cuando una ventana utiliza una superficie basada en OpenGL y aparece en modo de pantalla completa, pueden producirse problemas con otras ventanas de nivel superior que formen parte de la aplicación. Debido a las limitaciones del DWM de Windows, la composición no se maneja correctamente para las ventanas basadas en OpenGL cuando pasan al modo de pantalla completa. Como resultado, otras ventanas de nivel superior no se colocan encima de la ventana de pantalla completa cuando se hacen visibles. Por ejemplo, es posible que los menús no aparezcan correctamente o que los cuadros de diálogo no se muestren.
Una ventana puede utilizar una superficie basada en OpenGL explícitamente cuando se llama a setSurfaceType(), o cuando se utiliza algo que requiere OpenGL dentro de la ventana, haciendo que toda la ventana esté basada en OpenGL. Por ejemplo, QOpenGLWidget o QQuickWidget pueden provocar esto. Sin embargo, si la superficie está contenida en un QWindow que se aloja con createWindowContainer(), o se utiliza el obsoleto QGLWidget y éste cubre toda la ventana a pantalla completa, entonces este problema no se produce.
Para solucionar este problema, se pueden utilizar APIs nativas para habilitar el atributo WS_BORDER cuando se muestre en modo de pantalla completa. Esto se puede utilizar de la siguiente manera:
bool Widget::event(QEvent *e) { #if defined(Q_OS_WIN) if (e->type() == QEvent::WinIdChange) { if (windowHandle()) { HWND handle = reinterpret_cast<HWND>(windowHandle()->winId()); SetWindowLongPtr(handle, GWL_STYLE, GetWindowLongPtr(handle, GWL_STYLE) | WS_BORDER); } } #endif return QWidget::event(e); }
Esto dará a la ventana de pantalla completa un borde de 1 píxel, permitiendo así que las otras ventanas de nivel superior aparezcan en la parte superior.
Inicialización OLE
Qt utiliza OLE en Windows para poder soportar funcionalidades como el arrastre o el acceso al portapapeles. Para usar OLE, Qt tiene que llamar a OleInitialize. Esto a su vez establecerá el modelo de concurrencia del hilo a COINIT_APARTMENTTHREADED.
Llamar a CoInitializeEx o winrt::init_apartment en el hilo de la interfaz de usuario y especificar un modelo de concurrencia que no sea el de un único hilo (COINIT_APARTMENTTHREADED o winrt::apartment_type::single_threaded, respectivamente) podría dar lugar a errores o cuelgues de la aplicación.
© 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.