В моем классе (class FileView : public QObject) пишу функцию чтения бинарных данных из файла
проблема возникает на этапе открытия файла и создания потока чтения. Как только создается переменная QDataStream, строки становятся либо пустыми, либо недоступными. И частенько вылетает segmentation fault
QFile m_file; ///член моего класса FileView
void FileView::openFile(){
QString _name = QFileDialog::getOpenFileName(0, "Open file", "", "Data file (*.type1 *.type2)");
///тут _name видна
if(!_name.isEmpty())
{
if(m_file.isOpen())
m_file.close();
m_file.setFileName(_name);
if(m_file.exists())
{
if(m_file.open(QIODevice::ReadOnly))
{
QString suffix = _name.mid(_name.lastIndexOf('.')+1, _name.count() - 1 - _name.lastIndexOf('.'));
///пробовал такой вариант - почему-то выдает пустую строку
// QFileInfo fi(_name);
// QString suffix = fi.suffix();
QDataStream stream(&m_file);
//после выполнения этой строки, все переменные типа QString (_name, suffix) перестают быть видны
//и сравнение типа suffix == "type1" не срабатывает, хотя должно.
//Если после создания stream не пользоваться переменными типа QString, все работает корректно.
if(suffix == "type1")
{
readData(...);
}
if(suffix == "type2")
{
readData(...)
}
m_file.close();
}
}
}
}
Подскажите, в чем может быть дело?