QListWidget - autom. AKTUALISIERUNG [gelöst]
Verfasst: 23. September 2011 22:34
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
QListWidget / .cpp
Hier wird das QListWidget verwendet:
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.
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();
}
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());
}
}
Danke für Eure Hinweise.