crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Цикл по датам
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
OlejOK Дата 6.2.2019, 12:49
  Нашел решение
    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);
Алексей1153 Дата 6.2.2019, 9:37
  Гость_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


сравнивать даты лучше оператором QDateTime::operator= либо по значениям QDateTime::toSecsSinceEpoch()
OlejOK Дата 5.2.2019, 14:55
 
Цитата(Litkevich Yuriy @ 5.2.2019, 14:17) *
Из кода не понятно, что должно делаться. Для чего проверяется условие не равенства дат? Во внутреннем цикле дата никак не используется.

Не оставляй умалчиваемых имён виджетов, они ни о чём не говорят, давай им осмысленные имена

Основной вопрос у меня в том как сделать цикл от даты из одного dateEdit до даты в другом dateEdit
OlejOK Дата 5.2.2019, 14:52
 
Цитата(Litkevich Yuriy @ 5.2.2019, 14:17) *
Из кода не понятно, что должно делаться. Для чего проверяется условие не равенства дат? Во внутреннем цикле дата никак не используется.

Не оставляй умалчиваемых имён виджетов, они ни о чём не говорят, давай им осмысленные имена

Используется. Беру данные из ячеек tableView и помещаю в str и сравниваю с str2, в котором как раз дата из dateEdit
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++;
     }
}
Litkevich Yuriy Дата 5.2.2019, 14:17
  Из кода не понятно, что должно делаться. Для чего проверяется условие не равенства дат? Во внутреннем цикле дата никак не используется.

Не оставляй умалчиваемых имён виджетов, они ни о чём не говорят, давай им осмысленные имена
OlejOK Дата 5.2.2019, 13:43
  Как можно сделать цикл от даты которую беру в 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());
}
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 18.11.2019, 7:27