Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Radmir от Апрель 25, 2014, 21:17



Название: LineEdit не отображает русские буквы
Отправлено: Radmir от Апрель 25, 2014, 21:17
Салют всем кто может (и тем, кто не может, но хочет)!

Вот трабла:
Сделал диалог, в нем есть lineedit, все вроде путем,
запустил прогу, открыл диалог, пытаюсь набрать, но русские буквы не видны, хотя через слот буквы передаются, как это?
кодировка utf-8 для строк, для локали. аглицкие есть, а русских не видно, кто знает, подскажите...

С уважением,
Радмир


Название: Re: LineEdit не отображает русские буквы
Отправлено: Bepec от Апрель 25, 2014, 22:00
А без кода могу только цыган призвать, они потанцуют, покалякают и баг уведут вместе с вашей программой :)


Название: Re: LineEdit не отображает русские буквы
Отправлено: gil9red от Апрель 25, 2014, 22:44
А без кода могу только цыган призвать, они потанцуют, покалякают и баг уведут вместе с вашей программой :)

Угу, кода не хватает :)


Название: Re: LineEdit не отображает русские буквы
Отправлено: Old от Апрель 26, 2014, 09:45
Так а в используемом фонте русские буквы есть?


Название: Re: LineEdit не отображает русские буквы
Отправлено: Radmir от Апрель 26, 2014, 16:31
Так а в используемом фонте русские буквы есть?

Если этим же фонтом в редакторе крусейдера печатать например monotype, все видать,
может можно задать кодировку диалогу, элементам диалога?

Радмир


Название: Re: LineEdit не отображает русские буквы
Отправлено: Radmir от Апрель 28, 2014, 19:11
Кое-что прояснилось!
У окна есть свойство locale. Оно указывает язык и страну, в Qt под WinXP у меня окна имеют язык Russian, а страну RussianFederation, а Qt Linux всех установленных версий -
имеют язык Russian, а страну Russia! Но такой страны нет. Наверное надо переустанавливать Qt...
Линукс был установлен для англоязычного юзера, затем Qt, а языковые пакеты для линукса позже - может это повлияло, или это в Creatore что-то не оттуда берется...

С уважением,
Радмир


Название: Re: LineEdit не отображает русские буквы
Отправлено: Alex Custov от Апрель 28, 2014, 19:22
Локаль к вводу русских символов не имеет отношения.


Название: Re: LineEdit не отображает русские буквы
Отправлено: Radmir от Апрель 28, 2014, 19:59
Символы вводятся, но не отображаются...
тогда что?


Название: Re: LineEdit не отображает русские буквы
Отправлено: Alex Custov от Апрель 28, 2014, 20:03
Символы вводятся, но не отображаются...
тогда что?

Наверняка шрифт, но т.к. кода нет, то это просто предположение.


Название: Re: LineEdit не отображает русские буквы
Отправлено: Radmir от Апрель 28, 2014, 20:19
Код супер простой:
Заходите в Qt Creator, создаете новый проект с формой,
открываете окно mainwindow.ui в дизайнере, вставляете QLineEdit
сохраняете все файлы, и собираете проект.
Это все.
Все же проблема в криэйторе.
Сборка из командной строки парой qmake, make дает исполняемый модуль, который нормально работает с русскими буквами!!!

С уважением,
Радмир.


Название: Re: LineEdit не отображает русские буквы
Отправлено: Alexu007 от Апрель 29, 2014, 14:34
Всё тама вставляется. Ты в main.cpp не забыл вставить русификацию:

Код
C++ (Qt)
#include <QtGui/QApplication>
#include "widget.h"
 
#include <QTextCodec>
 
int main(int argc, char *argv[])
{
  QTextCodec::setCodecForCStrings(QTextCodec::codecForName("cp1251"));
 
   QApplication a(argc, argv);
   Widget w;
   w.show();
 
   return a.exec();
}
 


Название: Re: LineEdit не отображает русские буквы
Отправлено: Radmir от Апрель 29, 2014, 16:05
Всё тама вставляется. Ты в main.cpp не забыл вставить русификацию:

Код
C++ (Qt)
#include <QtGui/QApplication>
#include "widget.h"
 
#include <QTextCodec>
 
int main(int argc, char *argv[])
{
  QTextCodec::setCodecForCStrings(QTextCodec::codecForName("cp1251"));
 
   QApplication a(argc, argv);
   Widget w;
   w.show();
 
   return a.exec();
}
 

Конечно кодек для строк, локале,... стоит.

Однако причину нашел.

1. У меня юбунту 13.10
2. Сам я ставил Qt 4.8.4 - собирал сам вместе с webkit-ом, 4.8.5 и 5.2.0
3. При установке ubunt-ы указал поставить Qt и система сама поставила Qt 5.0.2

Так вот, при сборке в Qt creator-e я указал 4.8.2, 4.8.5, 5.2.0 а про 5.0.2 забыл...
Вот и получилось, что во всех qmake генерит разные Makefil-ы, но первые три версии криво поставлены, а родная системная 5.0.2 работает правильно. Ее и оставил в Криэйторе, а остальные нужно сносить, или переставлять...

Все равно всем большое спасибо!
Вопрос закрыт.
С уважением,
Радмир.


Название: Re: LineEdit не отображает русские буквы
Отправлено: Alex Custov от Апрель 29, 2014, 16:16
Всё тама вставляется. Ты в main.cpp не забыл вставить русификацию:

QTextCodec::setCodecForCStrings() к вводу русских букв тоже отношения не имеет.