Название: Menu + установка языка Отправлено: ifthl от Июнь 16, 2010, 19:52 Вопрос 1 :
В меню для установки языка надо создавать отдельный пункт для каждого(и определить отдельно каждый слот для языка) или можно QComboBox установить в Menu? Вопрос 2: к примеру в файле mainwindow.cpp есть слот Код: void MainWindow::setLanguage(const QString& str) // Установка языка если бы мы были в main.cpp было бы так Код: QApplication a(argc, argv); Название: Re: Menu + установка языка Отправлено: sendevent от Июнь 16, 2010, 20:17 1. комбобокс, возможно, удастся всунуть в меню через QWidgetAction (http://doc.trolltech.com/4.6/qwidgetaction.html) (а может, и не удастся ;)).
на мой взгляд, правильнее действительно каждый язык положить отдельной QAction, все присоединить к одному слоту, в котором проверять, хто именно сработал. 2. qApp (http://doc.trolltech.com/4.6/qapplication.html#qApp)? Название: Re: Menu + установка языка Отправлено: ufna от Июнь 17, 2010, 00:28 А еще не забыть что для уже созданных виджетов нужно обработать changeEvent(), иначе язык меняться не будет вот хоть убей.
qApp нужно использовать как "глобальную переменную". А вот комбобоксы в меню - не лучшее решение изначально. Вообще, язык имхо нужно выбирать либо в отдельном окошечке настроек, либо меню где они пойдут списком. А слот можно сделать один, предварительно экшенам задав objectName нужный тебе, а в слоте ловишь кто sender()->objectName() и от этого применяешь нужный язык. Название: Re: Menu + установка языка Отправлено: ifthl от Июнь 17, 2010, 10:13 А еще не забыть что для уже созданных виджетов нужно обработать changeEvent(), иначе язык меняться не будет вот хоть убей. qApp нужно использовать как "глобальную переменную". А вот комбобоксы в меню - не лучшее решение изначально. Вообще, язык имхо нужно выбирать либо в отдельном окошечке настроек, либо меню где они пойдут списком. А слот можно сделать один, предварительно экшенам задав objectName нужный тебе, а в слоте ловишь кто sender()->objectName() и от этого применяешь нужный язык. Буду благодарен если покажите как обработать changeEvent(). qDebug() << sender()->objectName(); "" <- выводит это для любого выбора меню Само меню Код: pmenu1->addAction("&Russian",&w,SLOT(setLanguage())); Название: Re: Menu + установка языка Отправлено: ufna от Июнь 17, 2010, 11:53 а ты вначале создай QAction, дай ему objectName, а затем уже пихай в меню
Код
И не забудь, что для корректной работы tr() в конструкторах и т.п. не должно быть точно таких же названий. Я обычно делал просто "название" в конструкторах, а в changeEvent() - уже нужные для перевода фразы. Название: Re: Menu + установка языка Отправлено: Kolobok от Июнь 17, 2010, 12:38 Для форм, созданных в дизайнере, не забудь добавить вызов retranslateUi().
Название: Re: Menu + установка языка Отправлено: ifthl от Июнь 17, 2010, 16:41 Спс всем за помощь, огорчает что всё так запутанно. И почему у Шлее в примерах всё так хорошо, а как дело доходит до создания классов...
Название: Re: Menu + установка языка Отправлено: ufna от Июнь 17, 2010, 22:37 А все элементарно, когда смена языка требует перезапуска. Ведь чаще всего динамической смены языка и не надо - либо определеяем какой язык у юзера на компе и ставим по-умолчанию такой же, либо спрашиваем при запуске. Перезагрузить приложение ради языка - не так уж сложно :)
Название: Re: Menu + установка языка Отправлено: Kolobok от Июнь 18, 2010, 00:26 Имхо требование перезагрузки при смене языка - вчерашний день. Сейчас это скорее показывает кривые руки (лень) программиста. Тем более, что в Qt это сделать очень просто.
|