QApplication a(argc, argv);
// Устанавливаем кодировку с которй будет работать программа (UTF-8 - точно ли она?)
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForLocale(codec);
MainWindow w;
w.show();
return a.exec();
}
Файл mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QStringList listCodec;
// все кодеки из доступных в Qt
listCodec << "Big5";
listCodec << "Big5-HKSCS";
listCodec << "CP949";
listCodec << "EUC-JP";
listCodec << "EUC-KR";
listCodec << "GB18030";
listCodec << "HP-ROMAN8";
listCodec << "IBM850";
listCodec << "IBM866";
listCodec << "IBM874";
listCodec << "ISO 2022-JP";
listCodec << "ISO 8859-1";
listCodec << "ISO 8859-2";
listCodec << "ISO 8859-3";
listCodec << "ISO 8859-4";
listCodec << "ISO 8859-5";
listCodec << "ISO 8859-6";
listCodec << "ISO 8859-7";
listCodec << "ISO 8859-8";
listCodec << "ISO 8859-9";
listCodec << "ISO 8859-10";
listCodec << "ISO 8859-13";
listCodec << "ISO 8859-14";
listCodec << "ISO 8859-15";
listCodec << "ISO 8859-16";
listCodec << "KOI8-R";
listCodec << "KOI8-U";
listCodec << "Macintosh";
listCodec << "Shift-JIS";
listCodec << "TIS-620";
listCodec << "TSCII";
listCodec << "UTF-8";
listCodec << "UTF-16";
listCodec << "UTF-16BE";
listCodec << "UTF-16LE";
listCodec << "Windows-1250";
listCodec << "Windows-1251";
listCodec << "Windows-1252";
listCodec << "Windows-1253";
listCodec << "Windows-1254";
listCodec << "Windows-1255";
listCodec << "Windows-1256";
listCodec << "Windows-1257";
listCodec << "Windows-1258";
text = "Îòïðàâèòåëü Ïîëó÷àòåëü";
ui->label->setText(text);
// Добавим из в comboBox
ui->comboBox->addItems(listCodec);
// Подключим сигнал изменеия comboBox
connect(ui->comboBox,SIGNAL(activated(QString)),this,SLOT(setCodec(QString)));
// Установим comboBox на нашу кодировку
ui->comboBox->setCurrentIndex(listCodec.indexOf("UTF-8"));
}
MainWindow::~MainWindow()
{
delete ui;
}
// Слот для изменения кодека
void MainWindow::setCodec(QString newCodec)
{
// Выбор кодека
QTextCodec *codec = QTextCodec::codecForName(newCodec.toLatin1());
// Изменяем кодировку
QByteArray encodedString = codec->fromUnicode(text);
// В label вписываем текст с новой кодировкой
ui->label->setText(encodedString);
}
Доступные кодаки можно получить статической функцией https://doc.qt.io/qt-5/qtextcodec.html#availableCodecs
Какую мне тогда выбрать в main.cpp?
Обсуждают сегодня