Пишу текстовый редактор с возможностью работы с несколькими документами.
Когда открыто хоть одно текстовое поле QTextEdit и я вызываю окно QFileDialog, то всё нормально открывается.
Но когда я закрываю все текстовые поля, то есть на экране нет поля ввода и я вызываю QFileDialog, то программа вылетает, и даже диалоговое окно не появляется, и вылетает она на слоте exec(), который выводит окно на экран.
Пробовал заменить статической функцией QFileDialog::getOpenFileName, но такая же ерунда, вылетает на этой функции.
Но если хоть одно текстовое поле открыто, то всё в норме.
QFileDialog dialog(this);
dialog.setNameFilter( tr("Text Files (*.txt);;HTML (*.html *.htm);; All (*)"));
dialog.setAcceptMode(QFileDialog::AcceptOpen);
QStringList fn1;
if (dialog.exec())
{
fn1=dialog.selectedFiles();
QString fn=fn1.back();
if(fn!="")
{
QFile f(fn);
if (!f.open(QIODevice::ReadOnly))
{
QMessageBox::critical(this, tr("Error"),
tr("Could not open file"));
return;
}
f.open(QIODevice::ReadOnly);
QTextStream ts1(&f);
ts1.setCodec("UTF-8");
QString text=ts1.readAll();
f.close();
QString newFilename=fn.section( "/", -1, -1 );
filename.push_back(fn);
N++;
//Создание нового поля ввода
QString editname= "textEdit" + QString::number(N);
QTextEdit *tmpDoc = new QTextEdit;
tmpDoc->setObjectName(editname);
tmpDoc->setGeometry(0,190,scrWidth,Htext);
tmpDoc->setText(text);
doc.push_back(tmpDoc);
flagSave.push_back(false);
ui.FileComboBox->addItem(newFilename);
int col2=ui.FileComboBox->count()-1;
ui.FileComboBox->setCurrentIndex(col2);
flagS=false;
}
}
То что находится в if (dialog.exec()) {...} верно 100%, стопорит именно на этом слоте.
Либо если меняю всё это на функцию QFileDialog::getOpenFileName то стопорит на ней даже не открывая окна.