Mal schaun :
Code: Alles auswählen
void MainWindow::slotOpenMultiAudio(){
do{
AudiofileNameList = QFileDialog::getOpenFileNames(this, tr("Open Audio File"),XmlFilePath,tr("Audio Files (*.wav *.mp3)"));
}while(AudiofileNameList.isEmpty());
Das Blockiert solange bis der was auswählt ... was wenn er dann doch nix auswählen möchte weil er nen Termin hat und weg muss? Wei wäre es statt
do { } while() mit
if (AudioDFileNameList.isEmpty()) return;
Code: Alles auswählen
QMessageBox::information(this,tr("Loading successful"),tr("Have loaded %1 audiofiles.").arg(AudiofileNameList.size()));
Irreführend ... die sind noch nicht geladen. Besser: "Selected %1 files" ... oder einfach keine Messagebox(ich denke mal das ist nur zum debuggen .. dann iss egal?)
Code: Alles auswählen
int index = sources.size();
foreach (QString string, AudiofileNameList) {
Phonon::MediaSource source(string);
sources.append(source);
Wer bittesehr nennt eine Zeichenkette "string" ?!?! nenn das fileName oder file oder sonstwas, aber vermeide Namen die durch Klassen vorbelegt sind. Wenn du später mal
using namspace std; oben reinpackst kriegste Ärger.
Davon mal abgesehen ... was glaubst du was passiert mit jeder einzelnen "source" wenn du die {} verlässt? Stichwort: SCOPE, HEAP, STACK.
Versuch mal
Code: Alles auswählen
Phonon::MediaSource * newSource = new Phonon::MediaSource(filename);
neuerMember_QListOfMediaSourceS.append(newSource);
und pack was in den Destruktor der das wieder aufräumt ...
Code: Alles auswählen
qDeleteAll(neuerMember_QListOfMedaSourceS); neuerMember_QListOfMedaSourceS.clear();
Code: Alles auswählen
}
if (!sources.isEmpty()){
metaInformationResolver->setCurrentSource(sources.at(index));
}
}
Damit setzt du das ganze auf die !!vorherige!! größe der sources ... also auf was was vor dem Slot schon drin war ... war nix drin gibts kein ärger (da empty, if verhindert das), war was drin gibts noch keinen Ärger, würde aber sobald du versuchst auf etwas zuzugreifen das bei
index+x in sources liegt (x in (1..AnzahlFilesGeadded)). Dann fliegt dir das ganze um die Ohren wegen dem was du da in der foreach() gemacht hast ...