crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 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 Рейтинг@Mail.ru Текстовая версия Сейчас: 4.7.2025, 23:24