• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Qt listview - zmiana wybranego elementu z listy

0 głosów
296 wizyt
pytanie zadane 3 grudnia 2016 w C i C++ przez piter600 Użytkownik (610 p.)
edycja 3 grudnia 2016 przez piter600

Witam, mam w swoim programie element listview. Po kliknięciu w jakis element z listy za pomocą sygnału on_listView_pressed pobieram odpowiednie dane z bazy:

   void MainWindow::on_listView_pressed(const QModelIndex &index)
{
    QString tekst;
    db.open();
    QString itemText = index.data(Qt::DisplayRole).toString();
    QSqlQuery query;
    query.prepare("SELECT * from Zawodnicy WHERE Imie = :Imie");
    query.bindValue(":Imie",itemText);
    query.exec();
    query.first();
    tekst = query.value(1).toString();
    ui->label->setText(tekst);
    tekst = query.value(2).toString();
    ui->label_2->setText(tekst);
    tekst = query.value(3).toString();
    ui->label_3->setText(tekst);
    db.close();
}

Czy da się jakoś zrobić aby zmiana zaznaczonego elementu listy za pomocą strzałek również działała?

1 odpowiedź

0 głosów
odpowiedź 4 grudnia 2016 przez Bondrusiek Maniak (61,460 p.)
Cześć,

możesz zaprogramować event, który będzie reagował na kliknięcie strzałek. Na przykładzie klasy : w pliku nagłówkowym *.h deklarujesz wirtualną funkcje: void keyPressEvent(QKeyEvent *e) a w pliku implementacyjnym *.cpp :

void keyPressEvent(QKeyEvent *e)

{

if(e->key() == Qt::Key_Up)

{

// jeśli klikniesz strzałka do góry zrób coś

}

else if(e->key == Qt::Key_Down)

{

// jeśli klikniesz strzałka w dół zrób coś

}

}
komentarz 7 grudnia 2016 przez piter600 Użytkownik (610 p.)

dzięki, ale mam kolejny problem. Przykładowo po kliknięciu strzałki powinien zaznaczyć się kolejny element na liście, więc pobrałem aktualny index, aktualny numer wiersza i nie wiem co dalej. Próbowałem z metodą setCurrentItem ale nie wychodzi , czy można jakoś ustawić element listy mając dany numer wiersza ? W klasie QListViewWidget jest metoda setCurrentRow natomiast w LIstView chyba nie ma.

    QString tekst;
    QModelIndex index;
    int row;
    
    index = ui->listView->currentIndex();
    row = ui->listView->currentIndex().row();
    row = row +1;

 

Podobne pytania

0 głosów
1 odpowiedź 282 wizyt
pytanie zadane 5 maja 2019 w Java przez Skipto Początkujący (300 p.)
0 głosów
0 odpowiedzi 163 wizyt
pytanie zadane 23 stycznia 2020 w Java przez Misanthrope2 Początkujący (360 p.)
0 głosów
1 odpowiedź 475 wizyt
pytanie zadane 28 grudnia 2019 w C# przez PH03NIX Mądrala (6,130 p.)

93,742 zapytań

142,678 odpowiedzi

323,297 komentarzy

63,326 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...