J'utilise des boîtes de dialogue Qt dans l'une de mes applications. J'ai besoin de cacher/supprimer le bouton d'aide. Mais je ne suis pas en mesure de localiser l'emplacement exact de la poignée de son bouton d'aide. Je ne sais pas si c'est un drapeau particulier sur la fenêtre Qt.
Réponses
Trop de publicités?Par défaut, le Qt::WindowContextHelpButtonHint est ajouté aux boîtes de dialogue. Vous pouvez contrôler cela avec l'option WindowFlags au constructeur de la boîte de dialogue.
Par exemple, vous pouvez spécifier uniquement le TitleHint y SystemMenu des drapeaux en faisant :
QDialog *d = new QDialog(0, Qt::WindowSystemMenuHint | Qt::WindowTitleHint);
d->exec();
Si vous ajoutez le Qt::WindowContextHelpButtonHint flag vous récupérerez le bouton d'aide.
Dans PyQt, vous pouvez le faire :
from PyQt4 import QtGui, QtCore
app = QtGui.QApplication([])
d = QtGui.QDialog(None, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
d.exec_()
Plus de détails sur les drapeaux de fenêtre peuvent être trouvés sur le site de la Enum WindowType dans la documentation de Qt.
Ok, j'ai trouvé un moyen de le faire.
Il traite des drapeaux de fenêtre. Voici donc le code que j'ai utilisé :
Qt::WindowFlags flags = windowFlags()
Qt::WindowFlags helpFlag =
Qt::WindowContextHelpButtonHint;
flags = flags & (~helpFlag);
setWindowFlags(flags);
Mais en faisant cela, l'icône de la boîte de dialogue est parfois réinitialisée. Donc, pour s'assurer que l'icône de la boîte de dialogue ne change pas, vous pouvez ajouter deux lignes.
QIcon icon = windowIcon();
Qt::WindowFlags flags = windowFlags();
Qt::WindowFlags helpFlag =
Qt::WindowContextHelpButtonHint;
flags = flags & (~helpFlag);
setWindowFlags(flags);
setWindowIcon(icon);
J'ai rencontré ce problème sous Windows 7, Qt 5.2, et la combinaison de drapeaux qui a le mieux fonctionné pour moi était la suivante :
Qt::WindowTitleHint | Qt::WindowCloseButtonHint
Cela me donne un bouton de fermeture fonctionnel mais pas de bouton d'aide avec point d'interrogation. En utilisant seulement Qt::WindowTitleHint ou Qt::WindowSystemMenuHint, je me suis débarrassé du bouton d'aide, mais j'ai également désactivé le bouton de fermeture.
Comme l'a suggéré Michael Bishop, c'est en jouant avec l'exemple windowflags que j'ai trouvé cette combinaison. Merci !
- Réponses précédentes
- Plus de réponses