Dolarun
@Dolarun

Как решить проблему с локализацей QT?

Компилятор не хочет пропускать русские символы в программе. Собираю через Cmake.
Код
#include <QtWidgets>
#include<iostream>

int main(int argc, char** argv) {

	QLocale curLocale(QLocale("Russia"));
	QLocale::setDefault(curLocale);

	QApplication app(argc, argv);
	QFrame* frame = new QFrame();

	QLabel* text = new QLabel(frame);
	QPushButton* butt = new QPushButton(frame);

	

	frame->setFrameStyle(2);
	frame->setContentsMargins({ 15,15,15,15 });
	text->setText("Здравствуйте, я вирус. По\n"
		"причине ужасной бедности моего создателя\n"
/*21*/		"и низкого уровня развития технологий в\n"
		"нашей стране я не способен причинить\n"
		"какой - либо вред вашему компьютеру.\n"
		"Поэтому очень прошу : сами сотрите какой - \n"
/*25*/		"нибудь важный для вас файл, а потом\n"
/*26*/		"разошлите меня по почте другим\n"
		"адресатам.Заранее благодарен за\n"
		"понимание и сотрудничество.");
/*29*/	butt->setText("Закрыть");
/*30*/	butt->move(100, 0);
	return app.exec();
}

Жалобы компилятора:
QTMemesMain.cpp(1): warning C4828: The file contains a character starting at offset 0x191 that is illegal in the current source character set (codepage 65001)
....
QTMemesMain.cpp(1): warning C4828: The file contains a character starting at offset 0x348 that is illegal in the current source character set (codepage 65001).

QTMemesMain.cpp(21): error C2001: newline in constant
QTMemesMain.cpp(25): error C2001: newline in constant
QTMemesMain.cpp(26): error C2001: newline in constant
QTMemesMain.cpp(29): error C2001: newline in constant
QTMemesMain.cpp(30): error C2146: syntax error: missing ')' before identifier 'butt'
QTMemesMain.cpp(30): error C2146: syntax error: missing ';' before identifier 'butt'

Пробовал локаль устанавливать через std::setlocale, ничего не изменилось.
CMake сценарий
# CMakeList.txt : CMake project for QTCounter, include source and define
# project specific logic here.
#

# Add source to this project's executable.
add_executable (QTMemes "QTMemesMain.cpp")

target_link_libraries(QTMemes PRIVATE Qt6::Widgets)

set_target_properties(QTMemes PROPERTIES
    WIN32_EXECUTABLE ON
    MACOSX_BUNDLE ON
)
# TODO: Add tests and install targets if needed.
  • Вопрос задан
  • 238 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы