sto realizzando un progetto universitario con QT ed ho bisogno di una mano con alcune funzioni.
il progetto consiste sostanzialmente nell'utilizzo di una lista concatenata per la creazione di una sorta di "database". Sono arrivato a questo punto: ho creato una funzione per l'aggiunga di un elemento e per l'ordinamento della lista, quindi ho aggiunto dei bottoni nel mainwindoe a cui ho "legato"tali funzioni.
Il primo problema in cui sono inciampato riguarda la funzione di ricerca di un elemento: ho pensato di aggiungere nel mainwindow un bottone che apre una nuova finestra in cui eseguire la ricerca; in questa finestra ho aggiunto un altro bottone che esegue la ricerca. la funzione di ricerca e la seguente:
- Codice: Seleziona tutto
void Dialog::on_search_clicked()
{
libro *p;
p=db.primo;
if(ui->listWidget!=0)ui->listWidget->clear();
if(ui->lineEdit!=0)
{
while(p!=0)
{
if(p->titolo!=ui->lineEdit->text())
{
p=(libro*)p->succ;
}
else
{
ui->listWidget->addItem(p->titolo);
ui->listWidget->addItem(p->autore);
ui->listWidget->addItem(p->genere);
ui->listWidget->addItem(p->anno);
ui->listWidget->addItem("\n");
p=(libro*)p->succ;
}
}
}
}
in pratica, una volta trovato l'elemento tramite ricerca per titolo dovrebbe stampare tutte le informazioni contenute in quell'elemento della lista in un listwidget apposito e poi continuare la ricerca per trovare eventuali altri elementi con lo stesso titolo; ma cio nn avviene, nn viene stampato nulla.
Un'altro problema riguarda la funzione salva: nel mainwindow ho aggiunto un bottone a cui ho associato una funzione per creare un file .txt cn le informazioni contenute nella lista. la funzione e la seguente:
- Codice: Seleziona tutto
void date::salva(void)
{
libro *p;
fstream file;
p=primo;
file.open("lista.txt",ios::out);
while(p!=0)
{
file<<p->titolo<<"\n";
file<<p->autore<<"\n";
file<<p->genere<<"\n";
file<<p->anno<<"\n";
p=(libro*)p->succ;
}
file.close();
}
dove date e una classe dichiarata nell header apposito:
- Codice: Seleziona tutto
typedef struct{
QString titolo;
QString autore;
QString anno;
QString genere;
void *succ;
}libro;
class date{
public:
libro *primo, *ultimo;
date(void);
~date(void);
libro *aggiungi(void);
void ordina(void);
void salva(void);
};
Quando vado a compilare mi da una serie di errori che nn riesco a capire; tuttavia la funzione e giusta in quanto, lavorando in viual c++ (in dos), funziona.
A questo punto mi affido a voi: sapete aiutarmi?
ps: dato che la cosa e piuttosto complessa e difficile da spiegare potrei anche postare, su vostra richiesta, il pregetto in formato zip, cosi potete farvi meglio un'idea sul mio problema e su cosa sto realizzando.
Grazie.
