2016-03-30 12 views
-2

Mein Problem ist: Ich habe QDialog Unterklasse, um ein Dialogfeld, das 2 SpinBoxes, eine OK und eine Abbrechen-Schaltfläche hat. Diese neue Klasse heißt MapCharacteristicsInputDialog.Qt 5.6 - Zurück von 2 Zoll von einem benutzerdefinierten QDialog

Jetzt, wenn ich auf eine Schaltfläche in meinem Hauptfenster klicke, möchte ich einen Dialog dieser Klasse öffnen und dann die Werte aus den Drehboxen abrufen, wenn sie mit der Schaltfläche OK geschlossen werden. Wie kann ich das machen ?

-Code, der die Pop aus dem Dialog löst:

void MainWindow::on_newMapButton_clicked(){ 
    MapCharacteristicsInputDialog* dialog = new MapCharacteristicsInputDialog(); 
    dialog->exec(); 
} 
+0

Lesen Sie einen [QPair] (http://doc.qt.io/qt-5.6/qpair.html) verwenden? – Michael

+0

Sind Sie sicher, dass Sie eine Instanz der Klasse dynamisch zuweisen möchten? Da Sie in C++ nicht 'new' verwenden müssen, um Instanzen zu erstellen, kann dies zu Speicherlecks führen, wenn Sie den zugewiesenen Speicher nicht löschen (was Sie anscheinend nicht tun). –

Antwort

3

Für den Anfang sollten Sie überprüfen, was the exec function zurückkehrt.

Dann ist der einfache Weg, zwei Access-Funktion in Ihrer MapCharacteristicsInputDialog Klasse zu haben, um die Werte des Spinner zu erhalten. sobald exec zurückkehrt.

+0

Danke! Ich benutzte 'int result = dialog-> exec();' und dann überprüfte 'if (Ergebnis == Qt :: Akzeptiert) {// die getters hier}' Funktioniert einwandfrei. –

1

können Sie signals verwenden, um die Werte der Spinnbox zusammen mit ihren Titeln zu übertragen, und dann jene signals zum slots jegliche Objekt verbinden, den die Daten benötigt werden.

mehr here

Verwandte Themen