Здравствуйте, SaZ, Вы писали:
SaZ>Здравствуйте, Denwer, Вы писали:
D>>Просто строковые константы нужно использовать как положено: D>>QString string = QStringLiteral("русский текст");
SaZ>QStringLiteral — это лямбда, который позволяет избежать вызова конструктора QString с сопутствующими конвертациями каждый раз, при создании переменной. Никакого отношения к кодировке исходников она не имеет.
Перед тем как писать это, нужно было открыть исходники QStringLiteral и посмотреть повнимательнее, что же там делает QT_UNICODE_LITERAL
Здравствуйте, Denwer, Вы писали:
D>Перед тем как писать это, нужно было открыть исходники QStringLiteral и посмотреть повнимательнее, что же там делает QT_UNICODE_LITERAL
И как это (define QT_UNICODE_LITERAL_II(str) L##str) поможет компилятору понять, в какой кодировке исходник?
Там же чуть дальше есть коммент: "// source code is assumed to be encoded in UTF-8"
Здравствуйте, SaZ, Вы писали:
SaZ>Здравствуйте, Denwer, Вы писали:
D>>Перед тем как писать это, нужно было открыть исходники QStringLiteral и посмотреть повнимательнее, что же там делает QT_UNICODE_LITERAL
SaZ>И как это (define QT_UNICODE_LITERAL_II(str) L##str) поможет компилятору понять, в какой кодировке исходник?
Он не помогает узнавать, этот макрос просто изменяет кодировку у строковых констант. В чем разница между "бла бла" и L"бла бла" я думаю рассказывать не нужно?
SaZ>Там же чуть дальше есть коммент: "// source code is assumed to be encoded in UTF-8"
D>Он не помогает узнавать, этот макрос просто изменяет кодировку у строковых констант. В чем разница между "бла бла" и L"бла бла" я думаю рассказывать не нужно?
Не нужно. Но если файл будет парситься компилятором не как utf-8, то этот макрос не сработает и на выходе будет не то, что ожидается. А если будет парситься как utf-8, то всё и так заработает.
Я к тому, что использование QStringLiteral не решает проблему топикстартера, а используется лишь для экономии процессорного времени.
Здравствуйте, SaZ, Вы писали:
SaZ>Здравствуйте, Denwer, Вы писали:
D>>Он не помогает узнавать, этот макрос просто изменяет кодировку у строковых констант. В чем разница между "бла бла" и L"бла бла" я думаю рассказывать не нужно?
SaZ>Не нужно. Но если файл будет парситься компилятором не как utf-8, то этот макрос не сработает и на выходе будет не то, что ожидается. А если будет парситься как utf-8, то всё и так заработает.
Для корректного распознавания компилятором кодировки файла, конкретно для MSVC нужно добавить UTF-8 BOM.
SaZ>Я к тому, что использование QStringLiteral не решает проблему топикстартера, а используется лишь для экономии процессорного времени.
Решает, если будет UTF-8, что я в первом сообщении и написал. Просто потом начали писать, что наоборот не нужно этого делать. Для корректной работы на MSVC компиляторе нужно сделать две вещи:
1 — добавить UTF-8 BOM
2 — использовать QStringLiteral
Здравствуйте, Denwer, Вы писали:
D>Решает, если будет UTF-8, что я в первом сообщении и написал. Просто потом начали писать, что наоборот не нужно этого делать. Для корректной работы на MSVC компиляторе нужно сделать две вещи: D>1 — добавить UTF-8 BOM D>2 — использовать QStringLiteral
а) Первое без второго не работает
б) QStringLiteral есть в Qt 5 и нет в Qt 4
Здравствуйте, Denwer, Вы писали:
D>Здравствуйте, S-SH, Вы писали:
SS>>б) QStringLiteral есть в Qt 5 и нет в Qt 4
D>Читаем первый пост: — Qt 5.4.2 D>Казалось бы, причем тут 4-я версия?
Здравствуйте, Denwer, Вы писали:
D>...
D>1 — добавить UTF-8 BOM
Этого достаточно.
D>2 — использовать QStringLiteral
Не обязательно. Ни на что не повлияет. Читаем: для создания строки будет использоваться QString::fromUtf8, а поскольку исходник и так уже а utf-8, то всё будет работать.
Здравствуйте, S-SH, Вы писали:
SS>Здравствуйте, Denwer, Вы писали:
D>>Здравствуйте, S-SH, Вы писали:
SS>>>б) QStringLiteral есть в Qt 5 и нет в Qt 4
D>>Читаем первый пост: — Qt 5.4.2 D>>Казалось бы, причем тут 4-я версия?
SS>Ни при чем. SS>Что не отменяет того факта, что ваше предложение в http://rsdn.ru/forum/cpp.qt/6080690.1
неработоспособно без использования QStringLiteral.
Конечно, я сразу и сказал, что мое предложение работоспособно если использовать советы разработчиков Qt, а именно применять нужно QStringLiteral.
SS>А мое предложение работает как в Qt 5, так и в Qt 4.
Пробежался по топику и не понял, какое именно?
Здравствуйте, SaZ, Вы писали:
SaZ>Здравствуйте, Denwer, Вы писали:
D>>...
D>>1 — добавить UTF-8 BOM SaZ>Этого достаточно.
D>>2 — использовать QStringLiteral SaZ>Не обязательно. Ни на что не повлияет. Читаем: для создания строки будет использоваться QString::fromUtf8, а поскольку исходник и так уже а utf-8, то всё будет работать.
Обязательно. Читать не хочу, советую просто попробовать:
Исходник к картинке:
ui->label->setText("Это русский текст");
ui->label_2->setText(QStringLiteral("Это русский текст"));
Здравствуйте, Denwer, Вы писали:
D>Конечно, я сразу и сказал, что мое предложение работоспособно если использовать советы разработчиков Qt, а именно применять нужно QStringLiteral.
Соглашусь, вы действительно так сказали. Правда, через год, но сразу.
SS>>А мое предложение работает как в Qt 5, так и в Qt 4. D>Пробежался по топику и не понял, какое именно?
Как я понимаю, режимы компиляции для компилятора можно задавать в проекте в секции CONFIG.
Если это так, то каким образом задать, например, режим оптимизации О3 ?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>Как я понимаю, режимы компиляции для компилятора можно задавать в проекте в секции CONFIG. LVV>Если это так, то каким образом задать, например, режим оптимизации О3 ?
Пытаюсь установить minGW64 — облом
Вот отсюда: https://sourceforge.net/projects/mingwbuilds/files/
качаю mingw-builds-install
Запускаю.
При установке пишет, что не может найти некий текстовый файл.
Надо сначала host-windows установить?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!