crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> перевод Q_PROPERTY
a_goodgirl
  опции профиля:
сообщение 7.7.2010, 12:30
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 35
Регистрация: 4.6.2009
Пользователь №: 801

Спасибо сказали: 0 раз(а)




Репутация:   0  


Спасибо всем, кто уже отвечал на вопросы! Возможно, ответы пригодились и еще кому-то :-)

Вот такой вопрос:
В неком классе есть обычные свойства, например:
Q_PROPERTY(QString fileName READ fileName WRITE setFileName)
Q_PROPERTY(QString filePath READ filePath WRITE setFilePath)

реализован свой property editor, усовершенствованный собрат такого же, как в дизайнере.
Прикрепленное изображение


Имя свойства берется из QMetaProperty->name().
Как сделать, чтобы можно было задать перевод свойства? Чтобы, например, было написано "Имя файла".

Может, кто-то посоветует, в какую сторону хотя бы рыть?
Начальник мне посоветовал попробовать переписать lupdate и lrelease. Там много букв..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
a_goodgirl
  опции профиля:
сообщение 7.7.2010, 16:25
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 35
Регистрация: 4.6.2009
Пользователь №: 801

Спасибо сказали: 0 раз(а)




Репутация:   0  


вы немного не понимаете сути проблемы. Речь идет совсем не о дизайнере - просто все видели в нем property editor и так проще объяснить, как он выглядит.
Классы написаны свои, пользовательские. Свойства у них могут быть какие угодно. Пользователь, который никогда дизайнера в глаза не видел и что такое qt не знает, должен видеть в приложении переведенные имена, а иначе это не имеет смысла (например, "Количество таблиц")
Property Editor работает так: для каждого типа (QVariant, могут быть собственные типы) определены фабрика и менеджер, есть map, связывающий тип свойства и фабрику(менеджер).

Например, свойство size имеет тип QSize. Конкретно для него релизован интерфейс QtSizePropertyManager, в котором "зашиты" width и height, и в этом локальном месте они обложены tr, поэтому мы видим "Ширина", "Высота".
void QtSizePropertyManager::initializeProperty(QtProperty *property)
{
    d_ptr->m_values[property] = QtSizePropertyManagerPrivate::Data();

    QtProperty *wProp = d_ptr->m_intPropertyManager->addProperty();
    wProp->setPropertyName(tr("Width"));
    d_ptr->m_intPropertyManager->setValue(wProp, 0);
    d_ptr->m_intPropertyManager->setMinimum(wProp, 0);
    d_ptr->m_propertyToW[property] = wProp;
    d_ptr->m_wToProperty[wProp] = property;
    property->addSubProperty(wProp);

    QtProperty *hProp = d_ptr->m_intPropertyManager->addProperty();
    hProp->setPropertyName(tr("Height"));
    d_ptr->m_intPropertyManager->setValue(hProp, 0);
    d_ptr->m_intPropertyManager->setMinimum(hProp, 0);
    d_ptr->m_propertyToH[property] = hProp;
    d_ptr->m_hToProperty[hProp] = property;
    property->addSubProperty(hProp);
}

Если задать свойство с именем Vasya типа QSize, то увидим в дереве то же самое
Vasya
Ширина
Высота

Речь же идет о том, что надо перевести слова size и Vasya, т.е. имена свойств, задаваемые в Q_PROPERTY.
В приведенным Вами примерах (на картинках) НИ ОДНО имя свойства не переведено.



property editor в общем тут совсем не при чем :-)

Хотелось бы как-то задавать свойству QMetaProperty имя, обложенное tr.
Например, понять, как работает макрос Q_PROPERTY - как он из строки кладет в некую структуру d класса QMetaProperty, откуда потом берется name()
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


15 чел. читают эту тему (гостей: 15, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 21.12.2024, 3:19