我一直在寻找谷歌和Stackoverflow,但我还没有找到是否有任何简单的解决方案来自动填充三个组合框以表示正确的日期(如YYYY-MM-DD)。我认为它与QCalendarWidget有关。有什么想法吗?
我希望能够滚动当前时间到X年前的日期,它不应该有像2011年2月29日那样的不存在的日期。不确定这是否要求太多。
答案 0 :(得分:2)
现在我知道你的想法。
答案很简单。制作三个组合框:日(1 - 31),月(1 - 12)和年(即1999 - 2012)。创建“确定”按钮。不需要超逻辑。
按下按钮后,只需通过创建QDate对象来验证日期,该对象具有用户给出的三个数字并调用QDate :: isValid()。如果不是,请创建一些警告提示并要求用户更改输入中的内容。
验证用户输入的数据的最佳方法是覆盖QDialog :: done()方法。
void Dialog::done(int r)
{
if(r == QDialog::Accepted) {
QDate date;
//Create QDate from comboboxes' values
...
if(!date.isValid()) {
//Some warning to user.
return;
}
}
QDialog::done(r);
}
答案 1 :(得分:1)
int X = 2;
QDate date = QDate::currentDate(), lastDate = date.addYears(-X);
for(; date > lastDate; date = date.addDays(-1))
ui->comboBox->addItem(date.toString("yyyy-MM-dd"));