QDateTimeEdit выбрать последний день каждого месяца

У меня есть QDateTimeEdit, и пользователь должен выбрать дату с ним. Тем не менее, мне нужно выбрать последний день каждого месяца. Так, например, если пользователь выбрал 3 марта, я должен установить дату 31 марта.

Я пытаюсь сделать это в слоте dateChanged(const QDate&) сигнал. Но когда я звоню setDate() функция, это заставляет слот вызываться еще раз.

Вот пример кода

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)
}

Что-то я пропускаю? Есть идеи?

Спасибо за ваше время!

0

Решение

РЕДАКТИРОВАТЬ: так как вы не можете просто сделать отключение, я бы посоветовал вам вместо этого сделать проверку и удалить подключение. Вы можете сделать это :

В конструкторе:

QTimer::singleShot(30, this, SLOT(checkDateChanged()));

Тогда в классе:

void MyClass::checkDateChanged()
{
if (pDateEdit->day() != pDateEdit->daysInMonth())
{
m_pDateEdit->setDate(QDate(date.year(), date.month(), date.daysInMonth()));
}
CallSomeFunction();
QTimer::singleShot(30, this, SLOT(checkDateChanged())); // this will create a loop called every 30 ms.

}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]