QDate

Dein Thema passt einfach in kein Forum? Dann probiers mal hier.
Antworten
Stryder
Beiträge: 9
Registriert: 28. Juli 2011 10:32

QDate

Beitrag von Stryder » 23. August 2011 00:45

Huhu,

ich hätte da mal eine Frage... kann ich mir das irgendwie einfacher machen?

Der Ausschnitt zeigt nur ersten des Monats der ein Do, Fr, Sa oder So ist... für ein Monat mit 31 Tagen
wenn das nicht einfacher geht muss ich das ja 28x machen.. für Monate mit 28, 29, 30 und 31 Tagen...
Eventuell stehe ich gerade auch auf dem Schlauch :D

Code: Alles auswählen

        if(date.dayOfWeek() == 4) {
            header << "Name" << "Do" << "Fr" << "Sa" << "So"
                   << "WI" << "Mo" << "Di" << "Mi" << "Do" << "Fr" << "Sa" << "Sp"
                   << "WI" << "Mo" << "Di" << "Mi" << "Do" << "Fr" << "Sa" << "So"
                   << "WI" << "Mo" << "Di" << "Mi" << "Do" << "Fr" << "Sa" << "So"
                   << "WI" << "Mo" << "Di" << "Mi" << "Do" << "Fr" << "Sa"
                   << "MI" << "MS";
            ui->tableWidget_planner->setColumnCount(1 + 4 + date.daysInMonth() + 2);
        }

        if(date.dayOfWeek() == 5) {
            header << "Name" << "Fr" << "Sa" << "So"
                   << "WI" << "Mo" << "Di" << "Mi" << "Do" << "Fr" << "Sa" << "So"
                   << "WI" << "Mo" << "Di" << "Mi" << "Do" << "Fr" << "Sa" << "So"
                   << "WI" << "Mo" << "Di" << "Mi" << "Do" << "Fr" << "Sa" << "So"
                   << "WI" << "Mo" << "Di" << "Mi" << "Do" << "Fr" << "Sa" << "So"
                   << "WI" << "MI" << "MS";
            ui->tableWidget_planner->setColumnCount(1 + 5 + date.daysInMonth() + 2);
        }

        if(date.dayOfWeek() == 6) {
            header << "Name" << "Sa" << "So"
                   << "WI" << "Mo" << "Di" << "Mi" << "Do" << "Fr" << "Sa" << "So"
                   << "WI" << "Mo" << "Di" << "Mi" << "Do" << "Fr" << "Sa" << "So"
                   << "WI" << "Mo" << "Di" << "Mi" << "Do" << "Fr" << "Sa" << "So"
                   << "WI" << "Mo" << "Di" << "Mi" << "Do" << "Fr" << "Sa" << "So"
                   << "WI" << "Mo" << "MI" << "MS";
            ui->tableWidget_planner->setColumnCount(1 + 5 + date.daysInMonth() + 2);
        }

        if(date.dayOfWeek() == 7) {
            header << "Name" << "So"
                   << "WI" << "Mo" << "Di" << "Mi" << "Do" << "Fr" << "Sa" << "So"
                   << "WI" << "Mo" << "Di" << "Mi" << "Do" << "Fr" << "Sa" << "So"
                   << "WI" << "Mo" << "Di" << "Mi" << "Do" << "Fr" << "Sa" << "So"
                   << "WI" << "Mo" << "Di" << "Mi" << "Do" << "Fr" << "Sa" << "So"
                   << "WI" << "Mo" << "Di" << "MI" << "MS";
            ui->tableWidget_planner->setColumnCount(1 + 5 + date.daysInMonth() + 2);
        }

        ui->tableWidget_planner->setHorizontalHeaderLabels(header);

franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: QDate

Beitrag von franzf » 23. August 2011 07:36

Speicher "Wi Mo Di Mi Do Fr Sa So" in einer eigenen QStringList. Zum Zusammenfügen brauchst du die dann nur oft genug in eine andere QStringList zu append-en. Für die erste und die letzte Zeile musst du nur mit deinem "dayOfWeek" rechnen - und dir ein QStringList::mid raus holen.

upsala
Beiträge: 3946
Registriert: 5. Februar 2006 21:52
Wohnort: Landshut
Kontaktdaten:

Re: QDate

Beitrag von upsala » 23. August 2011 09:11

So ungefähr:

Code: Alles auswählen

QStringList days << "Mo" << "Di" << "Mi" << "Do" << "Fr" << "Sa" << "So";

QDate startDate=?;

for (int i=0; i<startDate.daysInMonth(); ++i) 
{
  const QDate currentDate=startDate.addDays(i);
  header << days.value(currentDate.dayOfWeek()-1);
}

Stryder
Beiträge: 9
Registriert: 28. Juli 2011 10:32

Re: QDate

Beitrag von Stryder » 23. August 2011 12:46

Dankeschön :)

Edit:
Konnte es nun eig. ganz gut lösen:
Und hat viel Copy & Paste Arbeit erspart..

Code: Alles auswählen

    QStringList header;
    int WICount = 0;
    header << "Name";
    for(int i = 1; i <= date.daysInMonth(); i++) {
        date.setDate(ui->caledateEdit_2->text().toInt(),
                     ui->caledateEdit->date().month(), i);
        if(date.dayOfWeek() == 1) {
            header << "Mo";
        }
        if(date.dayOfWeek() == 2) {
            header << "Di";
        }
        if(date.dayOfWeek() == 3) {
            header << "Mi";
        }
        if(date.dayOfWeek() == 4) {
            header << "Do";
        }
        if(date.dayOfWeek() == 5) {
            header << "Fr";
        }
        if(date.dayOfWeek() == 6) {
            header << "Sa";
        }
        if(date.dayOfWeek() == 7) {
            header << "So" << "WI";
            WICount++;
        }
    }
    header << "MI" << "MS";
    ui->tableWidget_planner->setColumnCount(1 + WICount + date.daysInMonth() + 2);

Antworten