Seite 1 von 1

QInputDialog vs. QMessageBox

Verfasst: 24. September 2009 15:23
von reinki0013
Hallo zusammen,

ich möchte bei meinem Hauptprogramm beim starten eine kleine Box aufrufen, wo in einer Liste mehrere Einträge vorhanden sind...

je nachdem möchte ich dann einen Eintrag auswählen und diesen dann wieder an das Hauptfenster als QString zurückgeben...

jetzt hab ich das schon mit QInputDialog probiert, funktioniert auch, leider brauche ich keinen "Abbrechen"-Button...
kann ich den deaktivieren oder so?

bzw. kann ich bei der QMessageBox eine Liste von QStrings anzeigen die ich auswählen kann???

wäre toll wenn ihr mir weiterhelfen könnte...

besten dank

lg

Verfasst: 24. September 2009 15:40
von Exasperation
Hmm ich würds mir selber aus nem QDialog zusammenbasteln... Da ne QComboBox draufpacken und das ausgewählte Item ans Hauptfenster schicken. Da kannst dann auch selber die Buttons draufsetzen die du brauchst.

Verfasst: 24. September 2009 15:41
von reinki0013
Exasperation hat geschrieben:Hmm ich würds mir selber aus nem QDialog zusammenbasteln... Da ne QComboBox draufpacken und das ausgewählte Item ans Hauptfenster schicken. Da kannst dann auch selber die Buttons draufsetzen die du brauchst.
ja das hört sich ganz gut an...aber ich weiß nicht wie ich das am effektivsten umsetzen kann :oops:

Verfasst: 24. September 2009 17:32
von NoRulez
Schick doch ein Signal aus, sobald was ausgewähltbzw. abgebrochen wurde.

LG NoRulez

Verfasst: 28. September 2009 11:43
von reinki0013
hi,

also interessant wäre es doch, ob man bei dem QInputDialog den "Abbrechen"-Button aus der ButtonBox entfernen kann bzw. unsichtbar setzen kann.

hat das schon mal wer versucht?

lg

Verfasst: 28. September 2009 11:58
von reinki0013
also ich erläutere hier nochmal mein problem:

ich habe ein QMainWindow...
Vor dem Start dieses QMainWindow überprüfe ich, ob es mehrere Dateien gibt, die geladen werden könnten...

Ich möchte es so umsetzen, wenn es mehr als 1 Datei gibt, soll ein kleiner QInputDialog oder ein QDialog kommen, wo die Dateien aufgelistet drinnen stehen und ich dann auswählen kann, mit welcher Datei ich das Programm starten kann...

Wie schon gesagt, dass Problem mit dem QInputDialog ist leider, dass ich einen "Abbrechen"-Button habe, aber ich ihn auf keinen fall haben will...

wie könnte ich das jetzt umsetzen?

wäre für tipps und ratschläge dankbar...

lg

Verfasst: 28. September 2009 12:13
von pfid
Also was anderes als selbst bauen fällt mir da nicht ein.

Aber: was stört dich am Cancel-Button? Falls gedrückt -> Programm Ende alles gut. Wo liegts Problem?

Verfasst: 28. September 2009 12:19
von reinki0013
pfid hat geschrieben:Also was anderes als selbst bauen fällt mir da nicht ein.

Aber: was stört dich am Cancel-Button? Falls gedrückt -> Programm Ende alles gut. Wo liegts Problem?
ja und wie kann ich mir den QDialog selber bauen?
ich bräuchte eine kleine anregung, weiß nicht recht wie ich das angehen soll...Code ansätze wären toll...

wenn ich auf "Cancel" drücke, welches Signal muss ich da senden, dass es mir nachher mein QMainWindow auch schließt?

lg

Verfasst: 28. September 2009 13:07
von Tyrdal
Lies mal die Qt-Doku, die ist ganz gut. Den Dialog bastelst du dir am bequemsten mit dem Designer zusammen und qApp->quit() beendet das Programm.

Verfasst: 28. September 2009 13:32
von pfid
reinki0013 hat geschrieben:
pfid hat geschrieben:Also was anderes als selbst bauen fällt mir da nicht ein.

Aber: was stört dich am Cancel-Button? Falls gedrückt -> Programm Ende alles gut. Wo liegts Problem?
ja und wie kann ich mir den QDialog selber bauen?
ich bräuchte eine kleine anregung, weiß nicht recht wie ich das angehen soll...Code ansätze wären toll...

wenn ich auf "Cancel" drücke, welches Signal muss ich da senden, dass es mir nachher mein QMainWindow auch schließt?

lg
http://qt.nokia.com/doc/4.5/qinputdialog.html

Hier steht genau der Code den du brauchst:
http://qt.nokia.com/doc/4.5/qinputdialog.html#getItem

Ich weiß nicht wie dein Programm aufgebaut ist, ich würds so machen:

main.cc

Code: Alles auswählen

{
   QApplication app(argc, argv);
   Window window;

   // .. input dialog

   if (!ok)
      return 1;

   window.show();
   
   return app.exec();
}

Verfasst: 28. September 2009 13:58
von reinki0013
also ich habs jetzt mal so versucht:

ich habe mir eine neue "Qt GUI-Klasse" angelegt...

Diese Klasse rufe ich im Konstruktor auf und starte somit dieses Fenster...

Allerdings startet auch das Hauptfenster, aber ich würde gerne nur das "Nebenfenster" sozusagen anzeigen...

Kann ich das MainWindow irgendwie blockieren oder so?
Oder wie kann ich das machen?

lg

Verfasst: 28. September 2009 14:32
von Christian81
Doku zu QDialog -> QDialog::exec() !

Verfasst: 28. September 2009 15:00
von reinki0013
Christian81 hat geschrieben:Doku zu QDialog -> QDialog::exec() !
Genau das is es was ich brauche...besten dank...

jetzt startet zuerst der Dialog, wartet auf meine Eingabe...
dann sende ich den QString ans Hauptfenster und danach auch noch den closeEvent (sonst geht ja der Dialog nicht weg)...

besten dank an alle...

schönen tag noch

lg

Verfasst: 28. September 2009 15:38
von Christian81
Oder Du rufst das ganze auf bevor Du überhaupt MainWindow::show() ausführst (ist ein SLOT, kann man deshalb an QDialog::accepted() connecten). So mache ich es zumindest immer (z.B. für den Logindialog)