Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Цикл по датам



  • Как можно сделать цикл от даты которую беру в 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());
    }
    


  • Нашел решение

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

Log in to reply