0
我有一个QDateTimeEdit,用户应该选择一个日期。但是,我需要选择每个月的最后一天。因此,例如,如果用户选择3月3日,我应该将日期设置为3月31日。QDateTimeEdit选择每个月的最后一天
我尝试在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)
}
什么我失踪?有任何想法吗?
谢谢你的时间!
其实我已尝试为好,但不知何故槽被再次调用。 – nabroyan
好的,我会用更好的答案更新它。 (如果你给我的代码测试会更容易,但其他方面也可以) –
其实你给了我一个主意。我断开我的信号插槽,然后调用'setDate()',然后调用连接我的信号插槽的'singleShot()'。 – nabroyan