Qt - Désactivation de QDialog « ? » bouton
Question
Je crée une instance de QDialog et à gauche de « x » bouton (fermer) j'ai aussi '? bouton. Comment puis-je désactiver cette '? ?
La solution
Modifier les drapeaux de fenêtre, par exemple dans le constructeur:
this->setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint);
Autres conseils
De la documentation QDialog Qt 4.6:
QDialog::QDialog ( QWidget * parent = 0, Qt::WindowFlags f = 0 )
une boîte de dialogue avec Constructs
parent
parent.Une boîte de dialogue est toujours un widget niveau supérieur, mais si elle a un parent, son emplacement par défaut est centrée sur le dessus du parent. Il partagera également l'entrée barre des tâches du parent.
Les drapeaux du widget
f
sont passés au constructeur deQWidget
. Si, par exemple, vous ne voulez pas ** Qu'est ce que ce bouton dans la barre de titre de la boîte de dialogue **, passezQt::WindowTitleHint | Qt::WindowSystemMenuHint
dansf
.
Voir aussi QWidget::setWindowFlags()
.
Si vous voulez juste désactiver le bouton, vous pouvez appeler setEnabled(bool)
, mais je doute que ce soit ce qui est demandé.
Si vous voulez supprimer ce bouton, voir ci-dessous:
QDialog
vise à utiliser un QDialogButtonBox
comme les boutons qui apparaissent sur la boîte de dialogue. Vous pouvez utiliser accesseurs QDialogButtonBox afin de désactiver les boutons que vous ne voulez pas (ainsi que permettre aux autres).
Par exemple (de la documentation liée ci-dessus):
findButton = new QPushButton(tr("&Find"));
findButton->setDefault(true);
moreButton = new QPushButton(tr("&More"));
moreButton->setCheckable(true);
moreButton->setAutoDefault(false);
buttonBox = new QDialogButtonBox(Qt::Vertical);
buttonBox->addButton(findButton, QDialogButtonBox::ActionRole);
buttonBox->addButton(moreButton, QDialogButtonBox::ActionRole);
Si vous n'êtes pas au courant de la boîte de bouton, je suppose que le concepteur a ajouté automatiquement pour vous et il doit avoir un nom qui le rend accessible. Il devrait également y avoir des propriétés (cases à cocher) que vous pouvez vérifier afin de commander les boutons sont accessibles par défaut.