Je développe une interface utilisateur de plugin pour une application existante en utilisant PyQt4. La fenêtre est créée en utilisant uic.loadUi() en appuyant sur un bouton dans la fenêtre principale. Le problème est que si j'appuie à nouveau sur le bouton (pendant que la fenêtre est affichée), la fenêtre est recréée et les modifications non enregistrées sont perdues. Je ne veux pas faire la fenêtre modale. Quelles options ai-je pour faire face à ce problème? Je suppose que cela serait lié à vérifier si le QWidget est déjà en train de montrer.Comment vérifier si un QWidget est déjà affiché?
Répondre
Vous devez Initializer un pointeur vers la QWidget (Variable membre) à 0.
Lorsque le bouton est enfoncé, vérifiez si le pointeur est 0 - si elle est, la charge et de montrer le widget, et attribuer le pointeur variable pour pointer vers le nouveau widget. Si le pointeur n'est pas nul lorsque le bouton est enfoncé, appelez widget->raise()
et widget->activateWindow()
.
Les boutons désactivés peuvent être frustrants pour les utilisateurs, tout comme les boutons qui semblent ne rien faire, par exemple. leur effet est caché.
J'aurais pensé que cela serait plus géré par votre logique d'application qu'autre chose. La fenêtre principale doit désactiver le bouton après avoir cliqué dessus, puis le réactiver lorsque la fenêtre est fermée. Connectez un signal de fermeture sur la fenêtre secondaire à un emplacement sur la fenêtre principale pour notifier la fenêtre principale lorsque la fenêtre secondaire est en cours de fermeture.
Parfait! Notez simplement que la fonction s'appelle raise_() dans PyQt. – underdark