Qt pour Windows - Questions spécifiques
Cette page contient des informations sur Qt pour Windows.
Emplacement de l'installation
L'installation de Qt dans un répertoire contenant des espaces, par exemple, C :\Program Files, peut entraîner des problèmes avec qmake.
Installez Qt dans un sous-répertoire sans espaces pour éviter ce problème.
Longueur maximale du chemin d'accès
L'API Win32 que Qt et les outils de compilation utilisent a une longueur de chemin de fichier maximale intégrée de 260 caractères (MAX_PATH). Cette limite peut être atteinte de diverses manières si vos structures de répertoires absolues ou relatives sont trop verbeuses. Il est donc recommandé de limiter les chemins d'accès au système de fichiers et de placer les répertoires de construction à proximité des répertoires sources.
Visual Studio
Si vous rencontrez des problèmes étranges lors de l'utilisation de drapeaux spéciaux qui modifient l'alignement des membres de la structure et de l'union (tels que /Zp2), vous devrez recompiler Qt avec les drapeaux définis pour l'application.
Fenêtres en plein écran basées sur OpenGL
Lorsqu'une fenêtre utilise une surface OpenGL et apparaît en mode plein écran, des problèmes peuvent survenir avec d'autres fenêtres de niveau supérieur qui font partie de l'application. En raison des limitations du DWM de Windows, la composition n'est pas gérée correctement pour les fenêtres basées sur OpenGL lorsqu'elles passent en mode plein écran. Par conséquent, les autres fenêtres de niveau supérieur ne sont pas placées au-dessus de la fenêtre plein écran lorsqu'elles sont rendues visibles. Par exemple, les menus peuvent ne pas s'afficher correctement, ou les boîtes de dialogue ne s'affichent pas.
Une fenêtre peut utiliser une surface OpenGL soit explicitement lorsque setSurfaceType() est appelé, soit lorsque quelque chose qui nécessite OpenGL est utilisé à l'intérieur de la fenêtre, ce qui fait que toute la fenêtre est basée sur OpenGL. Par exemple, QOpenGLWidget ou QQuickWidget peuvent déclencher cela. Cependant, si la surface est contenue dans un site QWindow hébergé par createWindowContainer(), ou si le QGLWidget obsolète est utilisé et qu'il couvre la totalité de la fenêtre plein écran, ce problème ne se produit pas.
Pour résoudre ce problème, les API natives peuvent être utilisées pour activer l'attribut WS_BORDER lors de l'affichage en mode plein écran. Cela peut être utilisé de la manière suivante :
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); }
Cela donnera à la fenêtre plein écran une bordure de 1 pixel, permettant ainsi aux autres fenêtres de niveau supérieur d'apparaître au-dessus.
Initialisation OLE
Qt utilise OLE sur Windows pour pouvoir prendre en charge des fonctionnalités telles que le glisser-déposer ou l'accès au presse-papiers. Pour utiliser OLE, Qt doit appeler OleInitialize. Cela aura pour effet de définir le modèle de concurrence du thread à COINIT_APARTMENTTHREADED.
L'appel à CoInitializeEx ou winrt::init_apartment sur le thread de l'interface utilisateur et la spécification d'un modèle de concurrence autre que l'appartement à un seul thread (COINIT_APARTMENTTHREADED ou winrt::apartment_type::single_threaded, respectivement) peuvent entraîner des bogues ou des blocages de l'application.
© 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.