CurrentRow in QListWidget

Alles rund um die Programmierung mit Qt
Antworten
schoettner
Beiträge: 15
Registriert: 13. August 2012 17:12

CurrentRow in QListWidget

Beitrag von schoettner »

Hallo,

ich habe ein Problem mit einem QListWidget. Ich lade aus einer MySQL Datenbank Einträge und importiere diese als Checkbox. Beim importieren speicher ich mir die id des DS, Position und erstelle einen Flag, ob das item angeklickt wurde.

Code: Alles auswählen

        while (query.next())
        {
            QListWidgetItem* item = new QListWidgetItem;
            item->setText(query.value(0).toString());
            item->setCheckState(Qt::Unchecked);
            genrelistWidget->addItem(item);

            temp.changed = false;
            temp.id = query.value(1).toInt();
            temp.position = i;
            id_genre_list.push_back(temp);
            i++;
        }
Soweit funktioniert das. Jetzt Verbinde ich die Liste

Code: Alles auswählen

connect(genrelistWidget,SIGNAL(itemChanged(QListWidgetItem*)),this,SLOT(genre_changed(QListWidgetItem*)));

...

void EditDialog::genre_changed(QListWidgetItem* your_item)
{
    QMessageBox::information(0,"item changed","test ob der slot funktioniert");
    int cur_row = genrelistWidget->currentRow(); // cur_pos.row();
	// hier tritt der fehler auf
    QString temp_text;
    temp_text = temp_text.setNum(cur_row);
    QMessageBox::information(0,"flag in der Zeile wird gewechselt",temp_text);
}
Das Problem ist, das die cur_row variable nur beschrieben wird, wenn man auf das Element klickt. Klickt man direkt auf das Kontrollkästchen wird die Zeile nicht geändert!

Kann mir bitte jemand helfen, das Problem zu beheben? Vielen Dank
schoettner
Beiträge: 15
Registriert: 13. August 2012 17:12

Re: CurrentRow in QListWidget

Beitrag von schoettner »

hab die Lösung gefunden.

Code: Alles auswählen

    genrelistWidget->setCurrentItem(your_item);
    int cur_row = genrelistWidget->currentRow();
schon funktionierts
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: CurrentRow in QListWidget

Beitrag von franzf »

Wieso komliziert wenns auch einfach geht.

Code: Alles auswählen

int row = genrelistWidget->row(your_item);
Antworten