Seite 1 von 1

QInputDialog anpassen

Verfasst: 17. Februar 2010 10:31
von acdc
Hallo,

ich habe einen QInputdialog und will den Text in den Buttons verändern. Das mach ich so:

QStringList items;
items<<"w";
items<<"e";
items<<"g";
/*dialog zum löschen der Felder!*/

QInputDialog *dialog=new QInputDialog(this);
dialog->setCancelButtonText (trUtf8("Abbrechen"));
dialog->setOkButtonText (trUtf8("Löschen"));
dialog->setComboBoxEditable(false);
dialog->setComboBoxItems (items);
dialog->setLabelText(trUtf8("Profil zum Löschen auswählen:"));
dialog->setWindowTitle(trUtf8("Löschen"));
dialog->exec();

Wie kann ich nun abfragen welche taste gedrückt wurde und welches Item ausgewählt wurde??

danke
mfg acdc

Verfasst: 17. Februar 2010 10:53
von Exasperation
QInputDialog::getItem vereinfacht das ganze.

Verfasst: 17. Februar 2010 11:03
von erpheus
Du solltest in diesem Fall, den Dialog über die Statische Methoden dieser Klasse erstellen. Siehe Beispiel in der Doku:
http://doc.qt.nokia.com/4.6/qinputdialog.html

Demnach würdest Du also deinen Dialog mit Hilfe von QInputDialog::getItem(....) erstellen. und über die if-Abfrage
if (ok && !text.isEmpty())

erfahren ob der OK-Button oder Cancel-Button gedrückt wurde.

Beispiel aus Doku für text:

Code: Alles auswählen

bool ok;
     QString text = QInputDialog::getText(this, tr("QInputDialog::getText()"),
                                          tr("User name:"), QLineEdit::Normal,
                                          QDir::home().dirName(), &ok);
     if (ok && !text.isEmpty())
         textLabel->setText(text);
[/code]

Verfasst: 17. Februar 2010 15:30
von acdc
Exasperation hat geschrieben:QInputDialog::getItem vereinfacht das ganze.
Danke für die Antworten,
Ich möchte aber die Beschriftung der Buttons ändern!

-> denke Ich muss mir da einen eigenen Dialog basteln...

Verfasst: 17. Februar 2010 16:48
von erpheus
Du könntest es mit dem Signal:

Code: Alles auswählen

void QInputDialog::textValueSelected ( const QString & text )   [signal]
des Dialogs versuchen.

Die Doku sagt hierzu:
This signal is emitted whenever the user selects a text string by accepting the dialog; for example, by clicking the OK button. The selected string is specified by text.

This signal is only relevant when the input dialog is used in TextInput mode.
Da es für "eingegebenen Text ein eigenes Signal gibt, versteh ich den TextInput als eine Auswahl und/oder Eingabe in deine Itemslist.

Versuchs einfach mal, wenn es klappt ist es bestimmt schneller als einenen eigenen DIalog zu schreiben.