Wie, um die Daten von QDialog?
Ich versuche zu entwerfen, ein Hauptfenster und ein QDialog, und den besten Weg finden, um wieder die Daten aus einer QDialog
.
Ich jetzt bin, fangen die accepted()
signal aus dem dialog, nach dem ich call dialog die Funktion, dass die Daten zurück. Gibt es eine bessere Möglichkeit?
Hier ist der funktionierende code, den ich jetzt habe:
class MainWindow : public QMainWindow
{
//...
public slots:
void showDialog()
{
if (!myDialog)
{
myDialog = new Dialog();
connect(myDialog, SIGNAL(accepted()), this, SLOT(GetDialogOutput()));
}
myDialog->show();
}
void GetDialogOutput()
{
bool Opt1, Opt2, Opt3;
myDialog->GetOptions(Opt1, Opt2, Opt3);
DoSomethingWithThoseBooleans (Opt1, Opt2, Opt3);
}
private:
void DoSomethingWithThoseBooleans (bool Opt1, bool Opt2, bool Opt3);
Dialog * myDialog;
};
Und der Dialog:
class Dialog : public QDialog
{
//...
public:
void GetOptions (bool & Opt1, bool & Opt2, bool & Opt3)
{
Opt1 = ui->checkBox->isChecked();
Opt2 = ui->checkBox_2->isChecked();
Opt3 = ui->checkBox_3->isChecked();
}
};
Sieht unordentlich aus. Gibt es ein besseres design? Bin ich etwas fehlt?
Aussehen würde ein bisschen weniger chaotisch, wenn Sie erstellt eine einfache Struktur zu packen, die drei booleans, und kehrte, von GetOptions; aber abgesehen davon, dass die Technik in Ordnung ist.
InformationsquelleAutor Igor Oks | 2012-02-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
So in Ordnung ist, aber Sie könnte auch mit
Dialog
signal ausstrahlen wiemyDialogFinished(bool, bool, bool)
um einen slot aufMainWindow
, erspart man sich zurück rufen zuDialog
nachdem es fertig ist das Weg.InformationsquelleAutor Nicholas Smith
Ich in der Regel tun Sie dies:
InformationsquelleAutor John.D
Doch eine weitere option ist das bestehen der dialog zum speichern der Daten, wenn es fertig ist. Normalerweise würde ich dies tun, während die Instanziierung des dialog.
accepted
signalQDialog
??InformationsquelleAutor jwernerny