मैं एक मुख्य विंडो और एक QDialog डिजाइन करने की कोशिश कर रहा हूं, और QDialog
से डेटा वापस करने का सबसे अच्छा तरीका ढूंढने के लिए।QDialog से डेटा कैसे वापस करें?
अभी मैं संवाद से accepted()
सिग्नल को पकड़ रहा हूं, जिसके बाद मैं डायलॉग के फ़ंक्शन को कॉल करता हूं जो डेटा देता है। क्या कोई बेहतर तरीका है?
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;
};
और संवाद:
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();
}
};
कि गंदा लग रहा है
यहाँ काम कर कोड है कि मैं अब है। क्या कोई बेहतर डिजाइन है? क्या मैं कुछ भूल रहा हूँ?
थोड़ा कम गंदा लग सकते हैं अगर आप उन तीन बूलियन्स पैक करने के लिए एक सरल struct बनाया है, और GetOptions से लौटे कि; लेकिन इसके अलावा तकनीक ठीक है। – Mat