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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: const QString  (Прочитано 5798 раз)
Firefox
Гость
« : Октябрь 17, 2013, 09:46 »

Здравствуйте. подскажите маленький вопросик, как перевести QString в const  QString? Необходимо это для того, чтобы запихать имя файла в функцию setFileName(). имя файла зависит от текущего времени и даты, потому не константа. пробовала так:
Код:
QString str=....;
file->setFileName(str.toAscii().data());
file->setFileName(str.toLocal8Bit().data());
но программа все равно вылетает на этой строке.
Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #1 : Октябрь 17, 2013, 09:57 »

Ничего преобразовывать не надо. В прототипе метода указано не const QString, а const QString &. Это говорит о неизменяемости полученных данных, т.е. метод их только читает, а не изменяет.
Записан
Firefox
Гость
« Ответ #2 : Октябрь 17, 2013, 10:00 »

если поставить просто данные то не работает все равно
Код:
file->setFilename(str); 
« Последнее редактирование: Октябрь 17, 2013, 10:03 от Firefox » Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #3 : Октябрь 17, 2013, 10:01 »

Что есть file?
Записан
Firefox
Гость
« Ответ #4 : Октябрь 17, 2013, 10:04 »

Код:
QFile  *file;
Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #5 : Октябрь 17, 2013, 10:08 »

Код
C++ (Qt)
QString fname = QString("filename_%1.ext").arg(QDate::currentDate().toString("dd.MM.yyyy"));
file->setFileName(fname);
Записан
Firefox
Гость
« Ответ #6 : Октябрь 17, 2013, 10:10 »

спасибо. Ещё попробовала убрать указатель и все тоже заработало.
Код:
QFile file(str);
file.open(...);
Не знаю хуже это или нет вашего предложенного варианта
Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #7 : Октябрь 17, 2013, 10:12 »

А вот это уже зависит от контекста задачи: если надо прибить file на выходе из блока и закрыть при этом файл, то указатель не нужен.
Записан
Firefox
Гость
« Ответ #8 : Октябрь 17, 2013, 10:19 »

спасибо за ответы.
Записан
Firefox
Гость
« Ответ #9 : Октябрь 18, 2013, 09:54 »

Не хочу создавать новую тему потому спрошу тут же. Необходимо в заранее созданную папку записать файл. но имя папки русскими буквами. в main у меня написан кодек UTF-8 но всеравно буквы не воспринимает. работаю под Windows. подскажите как это решить?
Код:
main.cpp


QTextCodec *utfcodec = QTextCodec::codecForName("UTF-8");
    QTextCodec::setCodecForTr(utfcodec);
    QTextCodec::setCodecForCStrings(utfcodec);
    QTextCodec::setCodecForLocale(utfcodec);


работа с файлом

QFile fp(File_name);
    QDir *dr;
    QString path=dr->currentPath()+"/Принятые данные/"+File_name;
    qDebug()<<"path"<<path;  вместо русских букв выводит кракозябру
   
Записан
Firefox
Гость
« Ответ #10 : Октябрь 18, 2013, 10:00 »

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


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