Question

J'ai un QDialog contenant un sous-classé tas de sous-classé QSpinBox de. Lorsque vous cliquez sur un spinbox, un clavier (un autre QDialog) où vous pouvez utiliser des boutons poussoirs pour entrer les chiffres. Les deux années QDialog sont activés en appelant exec QDialog ();

Cependant, lors de l'ouverture de cette 2ème QDialog, la première ferme vers le bas. Je l'ai suivi pas à pas et remarqué le 1er QDialog ne se termine pas encore. QDialog 1 envoie « QDialog :: Rejeté » après avoir fini QDialog 2. Ce que je veux est le QDialog 1 ne pas mettre fin à tout, il doit mettre à jour le spinbox avec la valeur saisie et d'ouvrir plus QDialog est pour d'autres spinbox est la l'utilisateur souhaite modifier plus tard.

Je pense qu'il a à voir avec la eventloop de QDialog 1 tué par le eventloop de QDialog 2. Je l'ai essayé d'utiliser QDialog de spectacle sur QDialog 2. Le widget apparaît un instant (milliseconde), mais ne reste pas actif. QDialog 1 est immédiatement fermé aussi.

Était-ce utile?

La solution

QDialog 1 est réglé sur Qt Popup, QDialog 2 a été réglé sur Qt :: Dialog par défaut. Une fenêtre se ferme sur un large éventail d'événements. J'ai mis le drapeau de QDialog 2 à Qt :: Popup aussi bien, ce qui ne semble pas fermer QDialog 1 plus.

Autres conseils

La façon dont vous avez décrit verbalement le code, vous ne devriez pas voir le problème que vous décrivez. Sans voir votre code actuel, je ne pouvais pas en danger une conjecture quant à ce qui est à l'origine du problème. Cependant, je peux dire avec certitude que j'ai couru sur exec() dialogue A, puis à l'intérieur qui fonctionnent sur exec() dialogue B (à partir d'un bouton), et avait un dialogue séjour disponible lorsque les sorties de dialogue B.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top