Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:1
Поисковых ботовПоисковых ботов:2
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:4
Форум » starterkit.ru » Embedded Linux
вывод на русском в Qt и в консоли
alekstr
Добавлено 07.12.2011 12:59
0
Сообщение: 1
alekstr
0

Пункты: 1244
Регистрация: 20.10.2011
Пол: Мужчина
Встала задача русскоязычного вывода в своей программе. В Qt проблема решилась довольно просто через класс QTextCodec и функцию tr() (хорошая все-таки штука кроссплатформенность). Программка, которая выводит табличкой список доступных в системе шрифтов и вывод каждым из них на русском:
Код

#include <QtGui>

int main(int argc, char** argv)
{
QApplication app(argc, argv);
QTextCodec *loccodec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForTr(loccodec);
QStringList lst = QFontDatabase().families();
const int n = 2;

QTableWidget* tbl = new QTableWidget(lst.size(), n);
QTableWidgetItem* ptwi = 0;
QPushButton* quitbutton = new QPushButton(QObject::tr("Выход"));
QObject::connect(quitbutton, SIGNAL(clicked()), qApp, SLOT(quit()));

tbl->setVerticalHeaderLabels(lst);

for (int i = 0; i < lst.size(); ++i)
{
for (int j = 0; j < n; ++j)
{
if(j == 0) ptwi = new QTableWidgetItem(QObject::tr("Привет"));
else ptwi = new QTableWidgetItem(QString("Привет"));
ptwi->setFont(QFontDatabase().font(lst[i],"normal",10));
tbl->setItem(i, j, ptwi);
}
}

QHBoxLayout* layout = new QHBoxLayout;
layout->addWidget(tbl);
layout->addWidget(quitbutton);
QWidget window;
window.setLayout(layout);
window.showFullScreen();

return app.exec();
}


А вот настроить вывод на русском в консоль пока не могу. Понятно, что нужно настроить локаль, и инструкций на линукс-форумах действительно тонны. Но как решить эту задачу применительно к плате SK-9G45-OEM?
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 07.12.2011 14:28 Сообщение: 2
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
хм.. там все печально.. и меняется, как калейдоскоп..
для начала определитесь - что руссифицировать хотите:
консоль порта, экран ЖКИ или сетевую консоль
далее вечером посмотрю в архивах..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Lampus
Добавлено 07.12.2011 20:28 Сообщение: 3
Lampus
5

Пункты: 3552
Регистрация: 26.04.2011
Ну с Debian-ом проблем нет, там совсем всё просто. Правка /etc/locale.gen (надо раскоментировать те локали, которые нужны) и запуск команды locale-gen вас спасёт. Потом любую нужную локаль можно ставить с помощью переменных окружения LANG или LC_ALL. Про buildroot ничего сказать не могу.
Спуститься к концу Подняться к началу
Персональная информация
Spirit
Добавлено 02.02.2012 15:19 Сообщение: 4
Spirit
0

Пункты: 3257
Регистрация: 06.05.2010
Пол: Мужчина
Из: Энгельс-Саратов
alekstr, извините, а сколько шрифтов у вас обнаружилось??? у меня находит только 4 и с отображением русского ниодного. QT_QWS_FONTDIR не помогает. Как QT подложить шрифты???
Спуститься к концу Подняться к началу
Персональная информация
Spirit
Добавлено 05.02.2012 12:50 Редактировалось 05.02.2012 12:53 Сообщение: 5
Spirit
0

Пункты: 3257
Регистрация: 06.05.2010
Пол: Мужчина
Из: Энгельс-Саратов
alekstr, спасибо за программку, работает на 5+, сам бы долго писал такое:). Добавить шрифты оказалось несложно, вот как это делается (если кто-то наступит на теже грабли):
создается файл fontdir, в директории со шрифтами КуТэ, в этот файл, в текстовом редакторе, пишите какой шрифт добавить в соответствии с http://doc.qt.nokia.com/4.7-snapshot/qt-embedded-fonts.html (смотрим в самом низу странички табличку:) ), одна строчка из моего fontdir выглядит так:
DejaVuSТ DejaVuSans.ttf FT no 75 0

далее запускаем скрипты:
#!/bin/sh
#добавляем мышку - TS
export QWS_MOUSE_PROTO=Tslib:/dev/event0
#оворим где шрыфты
export QT_QWS_FONTDIR=/usr/lib/fonts

ну и естественно, пробуем приложение запустить.

И еще, может кому пригодиться (я личчно незнал, что так можно ускорить процесс), после сборки buildroot'а шаманства со сборкой QT ненадо, он лежит готовый, просто добавляем в переменную ПАТЧ папку (для виртуальной машины из комплекта) ..../src/buildroot-2010.08/output/build/qt..../bin/, в ней готовый qmake. Смело запускаем крмпиляцию проекта КуТэ. Копировать никакие либы и шрифты, покрайне мере мне, не пришлось, в ФС было AllIn ("все включено"), достаточно проверить и доопределить переменную ПАТЧ на платке.
Незабываем пробовать разные кодировки на плате, если русский шрифт неотображается. У меня заотображался с кодировкой windows-1251.

И последние, для проверки наличия и отображнения шрифтов, выше приведена отличная программка от alekstr, жаль что в ней нет смены кодировок.
Спуститься к концу Подняться к началу
Персональная информация
titan83
Добавлено 03.10.2013 14:28 Сообщение: 6
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
Подниму тему - вдруг кто из участников появится...
Тоже пробую писать по-русски в Qt 4.8.4, но пока неудачно - использую программку alekstr, строки c tr() выводятся пустыми символами, без tr() - квадратиками. Кодировка проекта в Creator - UTF8, и хотелось бы остаться только в ней, без 1251.
Пробовал ставить кодек в 1251, менял кодировку проекта на 1251 - ничего не меняется(
Может кто чего дельного посоветует?
Спуститься к концу Подняться к началу
Персональная информация
misha
Добавлено 26.11.2013 12:24 Сообщение: 7
misha
5

Пункты: 1208
Регистрация: 20.02.2013
Из: СПб
Цитата
Подниму тему - вдруг кто из участников появится...
Тоже пробую писать по-русски в Qt 4.8.4, но пока неудачно - использую программку alekstr, строки c tr() выводятся пустыми символами, без tr() - квадратиками. Кодировка проекта в Creator - UTF8, и хотелось бы остаться только в ней, без 1251.
Пробовал ставить кодек в 1251, менял кодировку проекта на 1251 - ничего не меняется(
Может кто чего дельного посоветует?


Попробуйте вызвать setCodecForLocale().
Спуститься к концу Подняться к началу
Персональная информация
titan83
Добавлено 12.12.2013 14:34 Сообщение: 8
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
Отпишусь на всякий случай - может кому поможет.
У меня проблема с выводом русских символов в графическом приложении решилась закидыванием дополнительных шрифтов qpf в папку fonts. Те, что были, содержали только латинский алфавит.
Спуститься к концу Подняться к началу
Персональная информация
lexx666
Добавлено 13.12.2013 07:50 Сообщение: 9
lexx666
3.83

Пункты: 11780
Регистрация: 28.07.2011
Пол: Мужчина
Из: Барнаул
Собирайте qt с поддержкой unicode шрифтов и будет вам счастье.
Спуститься к концу Подняться к началу
Персональная информация
titan83
Добавлено 13.12.2013 14:14 Сообщение: 10
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
Цитата
Собирайте qt с поддержкой unicode шрифтов и будет вам счастье.

У меня qt собрана с поддержкой unicode, я пишу в креаторе в юникоде-8, я не устанавливаю никаких других кодировок (аля 1251).
Но очевидно, что файл шрифта размером 3,5 килобайта не может содержать какие-либо еще кодовые страницы, кроме латинской, а вот другие шрифты содержат.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux