QListWidget - autom. AKTUALISIERUNG [gelöst]

Alles rund um die Programmierung mit Qt
Antworten
thc2_67
Beiträge: 16
Registriert: 28. August 2011 09:43

QListWidget - autom. AKTUALISIERUNG [gelöst]

Beitrag von thc2_67 »

Hallo,

ich hab da mal ein Problem und hoffe hier auf Hilfe zu stossen.

Ziel: ich möchte in einem definierten QWidget eine Liste von Einträgen (sind defacto Files eines bestimmten Directories) mittels eines QListWidget's anzeigen. Das funktioniert mal soweit.
Jedoch kann ich in meiner Klasse weitere Einträge (Files) in meinem Directory erstellen, diese sollen dann automatisch im QListWidget wieder
dargestellt werden.
Das QListWidget ist eine eigene Klasse und wird mittels QMap, welches das Directory auslest, "gefüttert".

QListWidget / .h

Code: Alles auswählen

#include <QWidget>
#include <QMap>
#include <QListWidget>

class VereinList : public QWidget
{
    Q_OBJECT
public:
    VereinList(const QMap<int,QString> &symbolMap, QWidget *parent = 0);

    QListWidget *listWidget;

private:

    int id;

public slots:
    void curItem(QListWidgetItem * item);
};

#endif

QListWidget / .cpp

Code: Alles auswählen

#include <QVBoxLayout>

#include "vereinlist.h"

VereinList::VereinList(const QMap<int,QString> &vereinMap, QWidget *parent)

{
    id=-1;
    listWidget = new QListWidget;
    QMapIterator<int,QString> Verein(vereinMap);
    listWidget->sortItems(Qt::AscendingOrder);
    while (Verein.hasNext())
    {
        Verein.next();
        QListWidgetItem *item = new QListWidgetItem(Verein.value(),listWidget);
    }
    QVBoxLayout *layout = new QVBoxLayout;
    listWidget->setFrameStyle(QFrame::Box);
    listWidget->setFrameShadow(QFrame::Sunken);
    layout->addWidget(listWidget);
    setLayout(layout);

    connect (listWidget,SIGNAL(itemActivated(QListWidgetItem*)),this,SLOT(curItem(QListWidgetItem*)));
}

void VereinList::curItem(QListWidgetItem *item)
{
    if(!item) return;
    item->setBackground(QBrush(Qt::red));
    id = item->data(Qt::UserRole).toInt();
    QString verein = item->text();
}
Hier wird das QListWidget verwendet:

Code: Alles auswählen

#include <QFile>
#include <QString>
#include <QStringList>
#include <QMap>

#include "defines.h"

#include "team.h"
#include "ui_team.h"



Team::Team(QWidget *parent) :
    QStackedWidget(parent),
    ui(new Ui::Team)
{
    ui->setupUi(this);
    ui->f_mannschaft_frame->hide();
    ui->f_spieler_frame->hide();
    ui->f_verein_name->setEnabled(false);
    ui->f_add_verein_abbrechen->setEnabled(false);
    ui->f_add_verein_ok->setEnabled(false);

    verein_ListFill();

    t_vereinList = new VereinList(teamMap);
  
    ui->f_teamList_layout->addWidget(t_vereinList);

    connect (ui->f_add_verein,SIGNAL(clicked()),this,SLOT(slot_addVerein()));
    connect (ui->f_add_verein_ok,SIGNAL(clicked()),this,SLOT(slot_addVereinOK()));
    connect (ui->f_add_verein_abbrechen,SIGNAL(clicked()),this,SLOT(slot_addVereinAbbrechen()));

}

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

void Team::slot_addVerein()
{
    ui->f_verein_name->setEnabled(true);
    ui->f_add_verein_abbrechen->setEnabled(true);
    ui->f_add_verein_ok->setEnabled(true);
}

void Team::slot_addVereinOK()
{
    if(ui->f_verein_name->text().isEmpty()) return;
    t_team = new Config(TEAM_DIR + QString("/") + ui->f_verein_name->text());
    t_team->setValue(CFG_TEAM_LOGO,"");
    t_team->saveToFile();
    verein_ListFill();

}
void Team::slot_addVereinAbbrechen()
{
    ui->f_verein_name->setText("");
    ui->f_verein_name->setEnabled(false);
    ui->f_add_verein_abbrechen->setEnabled(false);
    ui->f_add_verein_ok->setEnabled(false);
}

void Team::verein_ListFill()
{
    teamMap.clear();
    QDir team_dir(QDir::current().absolutePath() + QString("/") + TEAM_DIR);
    QStringList dirList = team_dir.entryList(QDir::Files);
    for(int i=0;i<dirList.size();i++)
    {
        teamMap.insert(i, dirList.at(i).toLocal8Bit().constData());
    }
}
Das QListWidget sollte nach der Aktuakiserung der QMap (das geht auch!) auch aktualisiert werden, nur das krieg ich leider nicht hin.

Danke für Eure Hinweise.
Zuletzt geändert von thc2_67 am 12. August 2012 14:22, insgesamt 1-mal geändert.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Re: QListWidget - autom. AKTUALISIERUNG

Beitrag von upsala »

Und warum nimmst du keine QListView und ein QFileSystemModel?
Antworten