MessreiheN im QLabel ausgeben (gelöst)

Alles rund um die Programmierung mit Qt
Antworten
lespaul
Beiträge: 87
Registriert: 11. August 2011 10:07

MessreiheN im QLabel ausgeben (gelöst)

Beitrag von lespaul »

Hallo,

ich habe eine Messreihe mit 52 verschiedenen Werten. Ich würde gerne die Häufigkeit dieser in einem Widget anzeigen lassen. Dazu habe ich eine QList mit QLabel's:

Code: Alles auswählen

TabCtrl_Frequency::TabCtrl_Frequency(QTabWidget *parent_tab)
{
    for( int i = 0; i < 52; i++)
    {
        f_list_labels.append(new QLabel(QString("%0").arg(i)));
        f_freq_labels.append(new QLabel(QString("%0").arg(ptr_oc->get_win_frequency_at(i))));
    }

    // Statistics TableWigdet
    f_Tab = new QWidget;

    /* Table settings and fonts */
    f_GridLayout = new QGridLayout;

    for( int i = 0; i < 52; i++)
    {
        f_GridLayout->addWidget(f_list_labels.at(i), 0, i);
        f_GridLayout->addWidget(f_freq_labels.at(i), 1, i);
    }

    parent_tab->addTab(f_Tab, QObject::tr("Frequency"));
    f_Tab->setLayout(f_GridLayout);
}
Ich habe noch einige Layouts wegen der Schönheit, aber das lasse ich der einfachheit halber weg. Nun werden die
Messwerte (gespeichert sortiert in einer QMap) von Zeit zu Zeit aktualisiert. Wie update ich die QLabel dann effizient in meiner QListe mit QLabels?
Zuletzt geändert von lespaul am 31. März 2013 20:23, insgesamt 1-mal geändert.
lespaul
Beiträge: 87
Registriert: 11. August 2011 10:07

Re: MessreiheN im QLabel ausgeben

Beitrag von lespaul »

Die Paint Mehode sieht wie folgt aus:

Code: Alles auswählen

void TabCtrl_Frequency::paintFrequency()
{
    if(f_GridLayout != NULL)
    {
        for( int i = 0; i < 31; i++)
        {
            f_GridLayout->addWidget(f_list_labels.at(i), 0, i);
            f_GridLayout->addWidget(f_freq_labels.at(i), 1, i);
        }
    }
}
Jedoch wird nichts aktualisiert?
veeman
Beiträge: 280
Registriert: 3. Oktober 2012 01:43
Kontaktdaten:

Re: MessreiheN im QLabel ausgeben

Beitrag von veeman »

Benutz die Funktion QLabel::setText um die neuen Werte zu setzen.
Btw. musst du die Labels einmal per new erstellen und einmal per addWidget zum Anzeigewidget hinzufügen und schließlich mit setText aktualisieren.

Code: Alles auswählen

f_freq_labels.at(i)->setText(QString("%0").arg(ptr_oc->get_win_frequency_at(i)));
mfg veeman
lespaul
Beiträge: 87
Registriert: 11. August 2011 10:07

Re: MessreiheN im QLabel ausgeben

Beitrag von lespaul »

Ja genau, mit setText() kann ich die QLabels zur Laufzeit modifizieren. Ich Danke!
Antworten