Программа подключается к серверу MySQL на котором созданна БД в кодировке Windows-1251 :
#include <QApplication>
#include <QResource>
#include <QLocale>
#include <QTextCodec>
#include "connection.h"
#include "mwnd.h"
int main(int argc, char *argv[]) {
Q_INIT_RESOURCE(application);
QApplication app(argc, argv);
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("Windows-1251"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
if (!createConnection())
return 1;
Mwnd *window = new Mwnd;
window->show();
return app.exec();
}
И по полученным данным строит свой GUI.
#include <QtGui>
#include <QSqlQuery>
#include "mwnd.h"
Mwnd::Mwnd() : QMainWindow() {
setupUi(this);
QSqlQuery query;
query.exec("SET NAMES CP1251");
query.exec("SELECT id, name FROM municipalities ORDER BY name ASC");
while (query.next()) {
QString name = query.value(1).toString();
comboBox->addItem(name);
}
}
Но беда в том, что строки выводимые в ComboBox-е отображаются символами Latin1, а не Windows-1251.
Что ещё необходимо настроить в QT для правильного отображения русских символов в формируемом виджете?