Qt: warten auf Eingabe von GUI
-
Hallo,
ich habe ein Programm geschrieben, welches Daten auswerten soll und dann den Benutzer fragen soll, ob die Auswertung OK ist oder nicht, und dann weiter laufen soll.
Bis jetzt habe ich dies mittels
//! Plot Data gui->printData(xDataPlot,yDataPlot); gui->printFit(bowShockFitParameter); QMessageBox msgBox; QPushButton *connectButton = msgBox.addButton("Fit Ok", QMessageBox::ActionRole); QPushButton *abortButton = msgBox.addButton(QMessageBox::Abort); msgBox.exec(); if (msgBox.clickedButton() == connectButton) { gui->writeToTerminal("OK"); return true; } else if (msgBox.clickedButton() == abortButton) { gui->writeToTerminal("Not OK"); return false; }
realisiert. Allerdings würde ich dies gerne ohne die Message Box machen, und ohne das die GUI abgedunkelt wird. Ich habe auf dem GUI schon entsprechende Knöpfe erstellt, allerdings weiß ich nicht wie ich dies programmieren soll. So das die Auswertung stoppt bis einer der Knöpfe gedrückt worden ist.
Kann mir jemand helfen und Tipps geben, wie ich dies programmieren kann?
Vielen Dank
-
Es gibt kein "Warten auf Knopfdruck", es gibt eine Verbindung zwischen Knopfdruck und einer entsprechenden Methode. Diese Verbindungen richtest du ein mit "QObject::connect()".
Darüber solltest du aber schon gestolpert sein, wenn du dich beim Qt-Lernen an die Tutorials von Qt gehalten hättest.BTW.:
Wenn nach Abschluss der Auswertung eine Bestätigung erforderlich ist, sollte das dem User auch deutlich mitgeteilt werden. Ein paar Buttons am Fensterrand sind dazu kein geeigenter Weg, da sie sich der Aufmerksamkeit des Users leicht entziehen. Die einzige Möglichkeit, den User zu einem "OK" zu zwingen, ist ein modaler Dialog.Deine Verwendung von QMessageBox ist außerdem ziemlich umständlich. Schau dir mal die statischen Funktionen an. QMessageBox::question() trifft es wohl am besten.