Как можно сделать цикл от даты которую беру в dateEdit до даты которую беру в dateEdit_2 ?
Если увеличивать значение в самом dateEdit с помощью stepUp(), то это прокатывает только в пределах одного месяца. stepUp() на следующий месяц не переходит, упирается в последний день.
Подскажите пожалуйста, какой можно использовать тип данных чтобы записать в него значения даты и сделать цикл по дням, или как увеличивать значение самого dateEdit, но чтобы осуществлялся в том числе переход на следующий месяц и в последствии год.
Пока что накостылил вот так, но как уже написал выше, если месяца разные, то все ломается.
void MainWindow2::on_pushButton_clicked()
{
const int rowCount = ui->tableView->model()->rowCount();
int countI=0;
int countK=0;
ui->label_3->setStyleSheet("color: rgb(0,0,200)");
ui->label_3->setText("Отчет с "+ui->dateEdit->text()+" по "+ui->dateEdit_2->text()+" сформирован:");
ui->dateEdit_2->stepUp();
while (ui->dateEdit->date()<ui->dateEdit_2->date()) {
for (int i = 0; i < rowCount; i++) {
QString str=ui->tableView->model()->data(ui->tableView->model()->index(i,0)).toString();
QString str2=ui->dateEdit->text();
QString str3=ui->tableView->model()->data(ui->tableView->model()->index(i,9)).toString();
QString str4="инцидент";
if (str==str2) {
if (str3==str4) {
countI++;
}
else {
countK++;
}
}
}
ui->dateEdit->stepUp();
}
QString str1 = QString::number(countI);
QString str2 = QString::number(countK);
ui->lineEdit->setText(str1);
ui->lineEdit_2->setText(str2);
ui->dateEdit->setDate(QDate::currentDate());
ui->dateEdit_2->setDate(QDate::currentDate());
}
Из кода не понятно, что должно делаться. Для чего проверяется условие не равенства дат? Во внутреннем цикле дата никак не используется.
Не оставляй умалчиваемых имён виджетов, они ни о чём не говорят, давай им осмысленные имена
QString str=ui->tableView->model()->data(ui->tableView->model()->index(i,0)).toString();
QString str2=ui->dateEdit->text();
...
if (str==str2) {
if (str3==str4) {
countI++;
}
else {
countK++;
}
}
Гость_OlejOK_ что понимается под "цикл от даты до даты" ? Шаг по дням/месяцам ?
Смотри функции
QDateTime addDays(qint64 ndays) const
QDateTime addMSecs(qint64 msecs) const
QDateTime addMonths(int nmonths) const
QDateTime addSecs(qint64 s) const
QDateTime addYears(int nyears) const
Нашел решение
QDate date;
date.setDate(ui->dateEdit->date().year(),ui->dateEdit->date().month(),ui->dateEdit->date().day());
QDate date2;
date2.setDate(ui->dateEdit_2->date().year(),ui->dateEdit_2->date().month(),ui->dateEdit_2->date().day());
while (date<date2) {
...
date = date.addDays(+1);
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)