Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

QT i ListView mi zadaje muke.

[es] :: C/C++ programiranje :: QT i ListView mi zadaje muke.

[ Pregleda: 2537 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

notebookFun
System Administrator
Novi Sad

Član broj: 226286
Poruke: 835



+20 Profil

icon QT i ListView mi zadaje muke.28.02.2011. u 00:42 - pre 159 meseci
Radim u QT creator-u i na formi imam jeda QListView i jedno dugme filmovi. Napravio sam da kada kliknem na dugme filmovi u QListView-u se pojave svi folderi filmova sa neke putanje npr. (C:\FILMOVI).
Kako sad da u QString ucitam ime selektovanog foldera iz QListView-a?

Da pojasnim malo:

Deklarisao sam
QString ime;

Kako sad da smjestim ime selektovano item-a iz QListView-a u QString ime, kad pokrenem neko dugme sa forme da se izvrsi ovo?


Na jednom stranom ircu sam dobio odgovor da prostudiram selectionModel () mada u samom QT manual-u i nema nekih primjera :(
Ukoliko se treseš od ljutnje na svaku nepravdu onda si moj suborac. ~Che Guevara
 
Odgovor na temu

glorius
Damir Nikolic
C++ developer
SR

Član broj: 4366
Poruke: 428
*.static.isp.telekom.rs.

ICQ: 208550327


+14 Profil

icon Re: QT i ListView mi zadaje muke.28.02.2011. u 14:52 - pre 159 meseci
Moj savet je da za proste operacije sa listom koristis QListWidget.
Mozes malo pogledati dokumentaciju QListWidget klase.

Jedan od nacina na koji mozes da napravis funkcionalnost koja ti treba:

Code:


VideoStore::VideoStore()
{
    ui.setupUi(this);

// dodavanje itema
    ui.listWidget->addItem("Naziv Filma 1");
    ui.listWidget->addItem("Naziv Filma 2");
    ui.listWidget->addItem("Naziv Filma 3");
    ui.listWidget->addItem("Naziv Filma 4");

    // kada kliknes na item generise se signal currentItemChanged(QListWidgetItem*,QListWidgetItem*)   - vidi u dokumentaciji
    connect(ui.listWidget, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), this, 
        SLOT(onCurrentItemChanged(QListWidgetItem*,QListWidgetItem*)));
}

void VideoStore::onCurrentItemChanged(QListWidgetItem* current,QListWidgetItem* previous)
{
    // od current itema uzimas text...
    QString movie = current->text();
}


EOF
 
Odgovor na temu

notebookFun
System Administrator
Novi Sad

Član broj: 226286
Poruke: 835



+20 Profil

icon Re: QT i ListView mi zadaje muke.06.03.2011. u 00:04 - pre 159 meseci
Koristio bih QListWidget ali ne znam kako da ucitam sve foldere iz jednog direktorijuma u njega, tj u iteme. Zbog toga sam koristio QListView.


Code:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtGui>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{

ui->setupUi(this);
    QSplitter *splitter = new QSplitter;
    QFileSystemModel *model = new QFileSystemModel;
    model->setRootPath(QDir::currentPath());
    ui->lista_filmova->setModel(model);
    ui->lista_filmova->setRootIndex(model->index("E:\\FILMOVI"));
    QItemSelectionModel *selection = new QItemSelectionModel(model);
    ui->lista_filmova->setSelectionModel(selection);
    splitter->show();







}

MainWindow::~MainWindow()
{
    delete ui;
}


void MainWindow::on_lista_filmova_doubleClicked(QModelIndex index)
{
    //QString naziv;    

}



E sad kako da naziv dobije ime od kliknutog itema???

Ukoliko se treseš od ljutnje na svaku nepravdu onda si moj suborac. ~Che Guevara
 
Odgovor na temu

glorius
Damir Nikolic
C++ developer
SR

Član broj: 4366
Poruke: 428
*.dynamic.isp.telekom.rs.

ICQ: 208550327


+14 Profil

icon Re: QT i ListView mi zadaje muke.06.03.2011. u 16:21 - pre 159 meseci
Code:


void MainWindow::on_lista_filmova_doubleClicked(const QModelIndex& index)
{
    const QAbstractItemModel* pModel = index.model();
    QString naziv = pModel->data(index).toString();
}



QModelIndex ima pointer na model.

QAbstractItemModel::data() je zaduzena za vracanje podataka iz modela tako sto predas index koji interno sadrzi row() i column() selektovanog itema i tako vraca informaciju o selektovanom itemu.

Ovo sve moze u jednom koraku:

Code:


void MainWindow::on_lista_filmova_doubleClicked(const QModelIndex& index)
{
    QString naziv = index.model()->data(index).toString();
}


EOF
 
Odgovor na temu

[es] :: C/C++ programiranje :: QT i ListView mi zadaje muke.

[ Pregleda: 2537 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.