Ich erstelle eine Instanz von QDialog und links von 'x' (schließen) Knopf habe ich auch '?' Taste. Wie kann ich das '?' ?Qt - Deaktivieren von QDialogs "?" Button
Antwort
Ändern Sie die Fensterfahnen, zum Beispiel im Konstruktor: „?“
this->setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint);
Danke, das ist was ich brauche. – Narek
Der Versuch, setWindowFlags() direkt aufzurufen, hat nicht funktioniert, weil '~' nicht angewendet wurde & = operator:
Qt::WindowFlags flags = windowFlags(); flags &= ~Qt::WindowContextHelpButtonHint; setWindowFlags(flags);–
Eigentlich hatten wir das gegenteilige Problem, unser Dialog hatte keine Help-Taste. Diese Antwort half uns, nach dem Problem zu suchen. Danke – Liz
Aus dem Qt 4.6 QDialog Dokumentation:
QDialog::QDialog (QWidget * parent = 0, Qt::WindowFlags f = 0)
Konstruiert einen Dialog mit Eltern
parent
.Ein Dialog ist immer ein Top-Level-Widget, aber wenn es einen Elternteil hat, ist sein Standard-Speicherort auf dem übergeordneten Element zentriert. Es teilt auch den Taskleisteneintrag des Elternteils.
Die Widget-Flags
f
werden an denQWidget
-Konstruktor übergeben. Wenn z. B. keine Schaltfläche ** Was ist das in der Titelleiste des Dialogfelds ** sein soll, übergeben SieQt::WindowTitleHint | Qt::WindowSystemMenuHint
inf
.
Siehe auch QWidget::setWindowFlags()
.
Für QDialog Qt :: WindowTitleHint | Qt :: WindowSystemMenuHint-Flags verursachen ein abnormales Verhalten. – Narek
Wenn Sie nur die Schaltfläche deaktivieren möchten, können Sie setEnabled(bool)
aufrufen, aber ich bezweifle, dass das gefragt wird.
Wenn Sie diese Schaltfläche entfernen möchten, siehe unten:
QDialog
soll eine QDialogButtonBox
wie die Tasten verwenden, die im Dialogfeld angezeigt. Sie können Accessoren verwenden, die in QDialogButtonBox verfügbar sind, um die Schaltflächen zu deaktivieren, die Sie nicht möchten (und andere auch aktivieren).
Zum Beispiel (aus der Dokumentation zu oben verlinkten):
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);
Wenn Sie keine Kenntnis von der Buttonbox sind, ich die Designer erraten würde automatisch hinzugefügt, es für Sie und es soll einen Namen hat das macht es zugänglich. Es sollte auch Eigenschaften (Checkboxen) geben, die Sie überprüfen können, um zu steuern, auf welche Schaltflächen standardmäßig zugegriffen werden kann.
Dies ist eine gut geschriebene Antwort, aber ich denke, er bezog sich auf Schaltflächen in der Titelleiste für den Dialog (Fensterdekorationen). –
Oh. Ich denke du hast recht - ich habe das definitiv falsch verstanden :(. –
Mögliche Duplikat [Wie kann ich mich verstecken/Löschen der Hilfe-Schaltfläche auf der "Titelleiste" eines Qt-Dialogs?] (http://stackoverflow.com/questions/81627/how-can-i-hide-delete-the-help-button-on-the-title-bar -of-a-qt-dialog) –