I einen Dialog AlarmSetup von QDialog mit folgenden Tastenanordnung abgeleitet habe:Rückgabewert von QDialog :: exec() immer QDialog :: Zurückgewiesen
// button box
buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel |ButtonBox::Help, Qt::Horizontal, this);
buttonBox->button(QDialogButtonBox::Ok)->setText("übernehmen");
buttonBox->button(QDialogButtonBox::Cancel)->setText("abbrechen");
buttonBox->button(QDialogButtonBox::Help)->setText("Hilfe");
connect(buttonBox, SIGNAL(accepted()), this, SLOT(slotOk()));
connect(buttonBox, SIGNAL(rejected()), this, SLOT(slotCancel()));
connect(buttonBox, SIGNAL(helpRequested()), this, SLOT(slotHelp()));
Von einem zweiten Dialog AlarmWindow, habe ich einen Schlitz AlarmWindow :: slotOpen(), in dem ich eine neue Instanz von AlarmSetup Erstellung und den Return-Code von AlarmSetup Auswertung :: exec():
void AlarmWindow::slotOpen() // we create a new instance of AlarmSetup
{
if (DBG_ALARM) qDebug() << "AlarmWindow::slotOpen() triggered";
int alarmId = mAlarm.getAlarmIdFromAlarmMap(objectName());
AlarmData alarmData = mAlarm.mAlarmMap.value(alarmId);
//qDebug() << "alarmData:" << alarmData << "| alarmId:" << alarmId;
AlarmSetup* alarmSetup = new AlarmSetup(mAlarm, alarmData, alarmId);
int res = alarmSetup->exec();
qDebug() << "AlarmWindow -> AlarmSetup() returned:" << (res==QDialog::Accepted? "QDialog::Accepted":"QDialog::Rejected");
...
}
res ist QDialog immer :: abgelehnt, independly die Schaltfläche geklickt ich in AlarmSetup! Die entsprechenden Buttons sind Standard-Button QDialogButtonBox :: Ok und QDialogButtonBox :: Cancel jeweils die entsprechenden Signale SIGNAL (accepted()) und SIGNAL (rejected()), also verstehe ich nicht, warum der Rückgabewert falsch ist!
Beachten Sie, dass der Dialog AlarmSetup wie erwartet funktioniert.
Jede Lösung, um den Rückgabewert zu erhalten, funktioniert?
Vielen Dank für Ihre Zeit.
hier ist der Code von slotOK()
void AlarmSetup::slotOk()
{
if (DBG_ALARM) qDebug() << "AlarmSetup::slotOk() triggered";
QTime time = timeBox->time();
time.addSecs(60); // next full minute
time.setHMS(time.hour(), time.minute(), 0);
AlarmData alarmData(alarmActiveBox->isChecked()
, QDateTime(calendar->selectedDate(), time)
, titleBox->text()
, textBox->document()->toPlainText()
, alarmSound->isChecked()
, alarmSoundBox->text()
, alarmRepeatActive->isChecked()
, numBox->text().toInt()
, unitBox->currentText()
, mFileName);
//qDebug() << "data from Setup:" << alarmData;
emit signalSetAlarm(alarmData, mAlarmId);
close();
}
Was ist Ihre Implementierung von 'slotOk'? –
http://stackoverflow.com/questions/12470806/qdialog-exec-and-getting-result-value Vielleicht kann dieser Beitrag Ihnen helfen –
@Dimitri - die vorgeschlagene Lösung von Jens A. Koch ist genau das, was ich getan habe! –