[Geloest] QDialogButtonBox::addButton nur 1 x ausfuehren

Alles rund um die Programmierung mit Qt
Antworten
gboelter
Beiträge: 80
Registriert: 5. Dezember 2007 14:52
Wohnort: Davao City, Philippines

[Geloest] QDialogButtonBox::addButton nur 1 x ausfuehren

Beitrag von gboelter »

Wenn ich mit

Code: Alles auswählen

QDialogButtonBox::addButton ( QAbstractButton * button, ButtonRole role )
einen Button hinzufuege, dann wird dieser Button bei jedem Aufruf der Funktion erneut hinzugefuegt, meine ButtonBox wird also sozusagen immer groesser.

Gibt es einen Weg Qt zu veranlassen diesen Button nur 1 x hinzuzufuegen?

Ich koennte natuerlich eine entsprechende Variable auf true setzen und dann vorher abfraegen, doch erscheint mir das ein wenig sehr primitiv zu sein. Und den Button jedesmal vor verlassen der Funktion mit removeButton zu entfernen klingt fuer mich auch nicht viel eleganter ...
Zuletzt geändert von gboelter am 19. Januar 2008 11:35, insgesamt 1-mal geändert.
Guenther
Davao City, Philippines, Planet Earth, 28°C

Qt 4.8.1 for Linux/X11 - Open Source Edition for Application Development
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Solche Dinge werden normalerweise immer nur einmal aufgerufen - wenn nicht ist dein Ansatz falsch...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Klingt für mich das er den Dialog einmal erstellt, und dann mehrmals aufruft und jedesmal einen Button hinzufügt. Du solltest den Dialog erst erstellen, wenn du ihn auch benutzt. Dann den Button hinzufügen und anzeigen. Qt kümmert sich um das löschen dann von alleine (oder du machst es).
gboelter
Beiträge: 80
Registriert: 5. Dezember 2007 14:52
Wohnort: Davao City, Philippines

Beitrag von gboelter »

Christian81 hat geschrieben:Solche Dinge werden normalerweise immer nur einmal aufgerufen - wenn nicht ist dein Ansatz falsch...
Was machst Du denn, wenn Du in einer Funktion einen Button hinzufuegen willst, z. B. als Reaktion auf die eine Eingabe in ein LineEdit? Also zum Beispiel damit ....

Code: Alles auswählen

    QPushButton *HelpButton;
    HelpButton = new QPushButton(tr("&Help"));
    HelpButton->setDefault(true);
    buttonBoxBanken->addButton(HelpButton, QDialogButtonBox::ActionRole);
Sobald Du dann - aus welchen Gruenden auch immer - ein zweites Mal in diese Funktion kommst, hast Du einen weiteren Button gleichen Namens in Deiner Maske. Und um hier auf Nummer sicher zu gehen, wuerde ich gerne abfragen koennen, ob 'HelpButton' bereits existiert.
Guenther
Davao City, Philippines, Planet Earth, 28°C

Qt 4.8.1 for Linux/X11 - Open Source Edition for Application Development
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ich würde den Button schon beim Initialisieren anlegen und dann nur per show()/hide() ein/ausblenden.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
gboelter
Beiträge: 80
Registriert: 5. Dezember 2007 14:52
Wohnort: Davao City, Philippines

Beitrag von gboelter »

PeterLustig hat geschrieben:Klingt für mich das er den Dialog einmal erstellt, und dann mehrmals aufruft und jedesmal einen Button hinzufügt. Du solltest den Dialog erst erstellen, wenn du ihn auch benutzt. Dann den Button hinzufügen und anzeigen. Qt kümmert sich um das löschen dann von alleine (oder du machst es).
Ich habe hier eine recht umfangreiche Routine zur Validierung von Eingaben und genau da bin ich - wie Du richtig erkannt hast - dann ein zweites mal reingelaufen und hatte somit auch einen zweiten Button.

Und damit sich solch ein Fehler nicht wiederholt suche ich nach einer simplem - moeblichst Qt-eigenen - Moeglichkeit sicherheitshalber vorher abzufragen, ob dieser Button nicht doch schon vorhanden ist.
Guenther
Davao City, Philippines, Planet Earth, 28°C

Qt 4.8.1 for Linux/X11 - Open Source Edition for Application Development
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Oder man speichert den QPushButton - Pointer.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
gboelter
Beiträge: 80
Registriert: 5. Dezember 2007 14:52
Wohnort: Davao City, Philippines

Beitrag von gboelter »

Christian81 hat geschrieben:Oder man speichert den QPushButton - Pointer.
Danke, ich denke, ich werde Deine Idee mit show() und hide() verwenden, zumal da mein Source auch schoen leserlich bleibt.

Bei einem gespeicherten Pointer raetselt man spaeter schon ehe mal, wofuer das denn gut war ... :wink:
Guenther
Davao City, Philippines, Planet Earth, 28°C

Qt 4.8.1 for Linux/X11 - Open Source Edition for Application Development
Antworten