Seite 1 von 1

CurrentRow in QListWidget

Verfasst: 19. August 2012 20:49
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

Re: CurrentRow in QListWidget

Verfasst: 20. August 2012 01:38
von schoettner
hab die Lösung gefunden.

Code: Alles auswählen

    genrelistWidget->setCurrentItem(your_item);
    int cur_row = genrelistWidget->currentRow();
schon funktionierts

Re: CurrentRow in QListWidget

Verfasst: 20. August 2012 06:38
von franzf
Wieso komliziert wenns auch einfach geht.

Code: Alles auswählen

int row = genrelistWidget->row(your_item);