我一直在寻找谷歌和 Stackoverflow,但我还没有找到任何简单的解决方案来自动填充三个组合框来表示正确的日期(如 YYYY-MM-DD)。我认为它与 QCalendarWidget 有关。有任何想法吗?
我希望能够滚动当前时间到 X 年前的日期,它不应该有像 2011 年 2 月 29 日这样不存在的日期。不确定这是否要求太多。
现在我明白你的想法了。
答案很简单。制作三个组合框:日 (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);
}
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"));