Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: ammaximus от Апрель 29, 2015, 08:47



Название: Перевод енума
Отправлено: ammaximus от Апрель 29, 2015, 08:47
В программе есть енум, который описывает состояние системы. Нужно сопоставить енумы с текстовыми строками, которые отображаются в комбобоксе. Эти строки должны быть переводимыми. Как бы вы это организовали на примере простейшего виджета?


Название: Re: Перевод енума
Отправлено: gil9red от Апрель 29, 2015, 08:57
Типа такого?
Код
C++ (Qt)
enum E {
   A = 0,
   B,
   C,
 
   max
}
 
QStringList l;
l.reserve(E.max);
l.insert(E.A, tr("A"));
l.insert(E.B, tr("B"));
 
QStringListModel model;
model.setStringList(l);
 
comboBox.setModel(&model);
 

На компиляберность не проверял, и уверен, можно сделать лучше :)


Название: Re: Перевод енума
Отправлено: Johnik от Апрель 29, 2015, 09:19
Как вариант:
Как преобразовать перечисляемый тип в QString (http://www.forum.crossplatform.ru/index.php?showtopic=2326&view=findpost&p=16234)


Название: Re: Перевод енума
Отправлено: kuzulis от Апрель 29, 2015, 09:48
А никак в общем случае. Только вручную:

Код
C++ (Qt)
   ui->comboBox->addItem(tr("Emum1"), Foo::Emum1);
   ui->comboBox->addItem(tr("EmumN"), Foo::EmumN);