Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Firefox от Октябрь 17, 2013, 09:46



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


Название: Re: const QString
Отправлено: Hellraiser от Октябрь 17, 2013, 09:57
Ничего преобразовывать не надо. В прототипе метода указано не const QString, а const QString &. Это говорит о неизменяемости полученных данных, т.е. метод их только читает, а не изменяет.


Название: Re: const QString
Отправлено: Firefox от Октябрь 17, 2013, 10:00
если поставить просто данные то не работает все равно
Код:
file->setFilename(str); 


Название: Re: const QString
Отправлено: Hellraiser от Октябрь 17, 2013, 10:01
Что есть file?


Название: Re: const QString
Отправлено: Firefox от Октябрь 17, 2013, 10:04
Код:
QFile  *file;


Название: Re: const QString
Отправлено: Hellraiser от Октябрь 17, 2013, 10:08
Код
C++ (Qt)
QString fname = QString("filename_%1.ext").arg(QDate::currentDate().toString("dd.MM.yyyy"));
file->setFileName(fname);


Название: Re: const QString
Отправлено: Firefox от Октябрь 17, 2013, 10:10
спасибо. Ещё попробовала убрать указатель и все тоже заработало.
Код:
QFile file(str);
file.open(...);
Не знаю хуже это или нет вашего предложенного варианта


Название: Re: const QString
Отправлено: Hellraiser от Октябрь 17, 2013, 10:12
А вот это уже зависит от контекста задачи: если надо прибить file на выходе из блока и закрыть при этом файл, то указатель не нужен.


Название: Re: const QString
Отправлено: Firefox от Октябрь 17, 2013, 10:19
спасибо за ответы.


Название: Re: const QString
Отправлено: Firefox от Октябрь 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;  вместо русских букв выводит кракозябру
   


Название: Re: const QString
Отправлено: Firefox от Октябрь 18, 2013, 10:00
Простите. проблемы как таковой оказалось нет. Это вывод в дебаг только не выводит русские буквы, но файл создается по заданному пути. :)