Witam, mam taki oto kod:
void MainWindow::on_pushButtonRename_clicked()
{
if(ui->lineEditNew->text().isEmpty())
{
QMessageBox::information(this, "info", "Name is empty!");
return;
}
notes.renameFile(ui->listWidgetNotes->currentItem()->text(), ui->lineEditNew->text());
this->setWindowTitle(ui->lineEditNew->text()+" - VfNotes 1.0");
ui->lineEditNew->clear();
ui->listWidgetNotes->clear();
ui->listWidgetNotes->addItems(notes.getFilesList());
}
Użycie w nim metody clear na listWidgetNotes powoduje zakończenie programu z kodem 0xc0000005. Stało się to, gdy te same instrukcje z jednego slotu QListWidget przeniosłem do innego slotu dla QListWidget oraz, gdy musiałem kod ze slotu lekko zmodyfikować. Kod poprzedniego slotu, na którym wszystko dobrze działało:
void MainWindow::on_listWidgetNotes_clicked(const QModelIndex &index)
{
ui->plainTextEditContent->setEnabled(true);
change = false;
if(isModified)
{
auto reply = QMessageBox::question(this, "Test", "Do you want save changes?", QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel);
if (reply == QMessageBox::Yes) on_pushButtonSave_clicked();
else if(reply == QMessageBox::No) notes.closeFile();
else
{
ui->listWidgetNotes->setCurrentIndex(lastIndex);
return;
}
}
isModified = false;
this->setWindowTitle(index.data().toString()+" - VfNotes 1.0");
ui->plainTextEditContent->setPlainText(notes.openFile(index.data().toString()));
lastIndex = index;
}
Kod slotu, w którym się to wszystko psuje:
void MainWindow::on_listWidgetNotes_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
{
ui->plainTextEditContent->setEnabled(true);
change = false;
if(isModified)
{
auto reply = QMessageBox::question(this, "Test", "Do you want save changes?", QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel);
if (reply == QMessageBox::Yes) on_pushButtonSave_clicked();
else if(reply == QMessageBox::No) notes.closeFile();
else
{
ui->listWidgetNotes->setCurrentItem(previous);
return;
}
}
isModified = false;
this->setWindowTitle(current->text()+" - VfNotes 1.0");
ui->plainTextEditContent->setPlainText(notes.openFile(current->text()));
}