Ich habe ein QDateTimeEdit und Benutzer sollte ein Datum mit ihm auswählen. Allerdings muss ich den letzten Tag jedes Monats auswählen. Wenn der Benutzer beispielsweise den 3. März auswählt, sollte das Datum auf den 31. März festgelegt werden.QDateTimeEdit Wählen Sie den letzten Tag jedes Monats
Ich versuche, diese in den Schlitz des dateChanged(const QDate&)
Signal zu tun. Aber wenn ich die Funktion setDate()
aufrufen, wird der Slot erneut aufgerufen. Hier
ist der Beispielcode
connect(m_pDateEdit, SIGNAL(dateChanged(const QDate&)), this, SLOT(OnDateChanged(const QDate&)));
void MyClass::OnDateChanged(const QDate& date)
{
const bool b = m_pDateEdit->blockSignals(true);
// THIS LINE CAUSES TO THIS SLOT TO BE CALLED TWICE
m_pDateEdit->setDate(QDate(date.year(), date.month(), date.daysInMonth()));
CallSomeFunction();
m_pDateEdit->blockSignals(b)
}
Alles, was ich vermisst habe? Irgendwelche Ideen?
Vielen Dank für Ihre Zeit!
Eigentlich habe ich versucht, das so gut, aber irgendwie Schlitz wieder aufgerufen werden. – nabroyan
ok Ich werde es mit einer besseren Antwort aktualisieren. (es wäre einfacher zu testen, wenn Sie mir den Code geben, aber sonst ist das auch in Ordnung) –
Eigentlich hast du mir eine Idee gegeben. Ich trenne meinen Signal-Slot, rufe 'setDate()' auf und rufe 'singleShot()' auf, was meinen Signal-Slot wieder verbindet. – nabroyan