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

Schreibe einen Kommentar