Russian Qt Forum
Март 29, 2024, 09:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QDataStream портит переменные QString  (Прочитано 1680 раз)
van_de_luxe
Гость
« : Февраль 22, 2018, 11:40 »

В моем классе (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();
            }
        }
    }
}

Подскажите, в чем может быть дело?
Записан
van_de_luxe
Гость
« Ответ #1 : Февраль 22, 2018, 12:03 »

Вынес эту функцию в отдельный проект - работает корректно.
Может дело в том, что она как слот вызывается...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.089 секунд. Запросов: 21.