Название: Динамический перевод Отправлено: Bzzzuka от Апрель 03, 2012, 17:52 Есть проблемы с осуществлением динамического перевода, точнее проблема одна - я понятия не имею как это делать. Вот тут накидано что родил мой блондинистый мозг.
создала слот void MainWindow::SwitchLanguage(int n) { QTranslator translator; switch (n) { case ui->action_eng->triggered(): translator.load("eng.qm","."); ui.retranslateUi(this); break; case ui->action_rus->triggered(): translator.load("rus.qm","."); ui.retranslateUi(this); break; case ui->action_de->triggered(): translator.load("de.qm","."); ui.retranslateUi(this); break; case ui->action_esp->triggered(): translator.load("esp.qm","."); ui.retranslateUi(this); break; case ui->action_ch->triggered(): translator.load("ch.qm","."); ui.retranslateUi(this); break; } и создала связь grpAct = new QActionGroup(this); grpAct->addAction(ui->action_eng); grpAct->addAction(ui->action_de); grpAct->addAction(ui->action_rus); grpAct->addAction(ui->action_esp); grpAct->addAction(ui->action_ch); connect(grpAct,SIGNAL(triggered(QAction*)),this,SLOT(SwitchLanguage())); выдает ошибку request for member 'retranslateUi' in '((MainWindow*)this)->MainWindow::ui', which is of non-class type 'Ui::MainWindow* Название: Re: Динамический перевод Отправлено: mutineer от Апрель 03, 2012, 18:31 ui.retranslateUi(this);
ui указатель же, вызывать методы надо по стрелке, а не по точке Название: Re: Динамический перевод Отправлено: Bzzzuka от Апрель 03, 2012, 18:34 При нажатии точки он выдает мне вместо нее стрелку и выбор возможных действий
Название: Re: Динамический перевод Отправлено: mutineer от Апрель 03, 2012, 18:35 При нажатии точки он выдает мне вместо нее стрелку и выбор возможных действий круто, потому что "он" (кем бы он ни был) знает что это указатель и использовать нужно не точку, а стрелку... А у тебя точкаНазвание: Re: Динамический перевод Отправлено: Bzzzuka от Апрель 03, 2012, 18:41 ладно эту ошибку я исправила, теперь ему не нравиться
MainWindoW::Ui cannot appear in constant-expression и еще кучу подобных ошибок Название: Re: Динамический перевод Отправлено: mutineer от Апрель 03, 2012, 18:42 вероятно нельзя делать так
case ui->action_eng->triggered(): после case должно быть константное целое выражение В ошибке наверняка указан номер строки, в которой эта ошибка присутствует Название: Re: Динамический перевод Отправлено: Bzzzuka от Апрель 03, 2012, 18:47 ну да ошибки присутствуют в каждой строке.. поэтому наверное нет смысла уточнять в какой именно.
Название: Re: Динамический перевод Отправлено: mutineer от Апрель 03, 2012, 18:47 ну да ошибки присутствуют в каждой строке.. поэтому наверное нет смысла уточнять в какой именно. Первая ошибка присутствовала явно не в каждой строке Название: Re: Динамический перевод Отправлено: Bzzzuka от Апрель 03, 2012, 19:32 void MainWindow::SwitchLanguage()
{ QTranslator translator; if (ui->action_eng) { translator.load("eng.qm","."); ui->retranslateUi(this); } else if (ui->action_rus) { translator.load("rus.qm","."); ui->retranslateUi(this); } else if(ui->action_de) { translator.load("de.qm","."); ui->retranslateUi(this); } else if(ui->action_esp) { translator.load("esp.qm","."); } else if (ui->action_ch) { translator.load("ch.qm","."); ui->retranslateUi(this); } qApp->installTranslator(&translator); } вот последний вариант.. прога компилируется но при выборе языка из выпадающего списка перевода не происходит.. Название: Re: Динамический перевод Отправлено: Странник от Апрель 03, 2012, 19:57 хоть так, прости господи..
Код: void MainWindow::SwitchLanguage(QAction *action) Код: connect(grpAct,SIGNAL(triggered(QAction*)),this,SLOT(SwitchLanguage(QAction*))); Название: Re: Динамический перевод Отправлено: kambala от Апрель 03, 2012, 20:00 если объект типа QTranslator умирает, то перевод сбрасывается для всех невидимых виджетов, так что лучше его делать полем класса
Название: Re: Динамический перевод Отправлено: mutineer от Апрель 03, 2012, 20:08 if (ui->action_eng)
что в твоем понимании должен проверять этот if? Название: Re: Динамический перевод Отправлено: Bzzzuka от Апрель 03, 2012, 20:43 сделала все как сказано все равно не работает
Mutineer, по идее должно быть наверное ui->action_eng->triggered() но Qt на это ошибку выдает Название: Re: Динамический перевод Отправлено: mutineer от Апрель 03, 2012, 20:44 Ну раз ошибку выдает, то ошибку эту надо исправлять
Название: Re: Динамический перевод Отправлено: Bzzzuka от Апрель 03, 2012, 20:47 как еще можно заявить произведение действия triggered над action_eng?
Название: Re: Динамический перевод Отправлено: mutineer от Апрель 03, 2012, 20:49 triggered() это вообще-то сигнал, что еквивалентно по правилам вызова приватной функции. Намек понятен?
Название: Re: Динамический перевод Отправлено: Bzzzuka от Апрель 03, 2012, 20:53 последний вариант
void MainWindow::SwitchLanguage(QAction*) { QTranslator translator; if (ui->action_eng->isChecked()) { translator.load("eng.qm","."); } else if (ui->action_rus->isChecked()) { translator.load("rus.qm","."); } else if(ui->action_de->isChecked()) { translator.load("de.qm","."); } else if(ui->action_esp->isChecked()) { translator.load("esp.qm","."); } else { translator.load("ch.qm","."); } qApp->installTranslator(&translator); ui->retranslateUi(this); } все равно не работает Название: Re: Динамический перевод Отправлено: Bzzzuka от Апрель 03, 2012, 20:55 Почему никто не обращает внимания на мой аватар(((
Название: Re: Динамический перевод Отправлено: mutineer от Апрель 03, 2012, 20:55 последний вариант Код: void MainWindow::SwitchLanguage(QAction*) Очень грустно, что не работает. возможно, но не точно, ибо мысли я читать почему-то не умею и экран твой тоже не вижу (видать зрение ухудшается) не стоит делать translator локальным в функции Название: Re: Динамический перевод Отправлено: Bzzzuka от Апрель 03, 2012, 20:57 может пришлю на мыло например или через аську а вы посмотрите??? Моя аська 426012470
Название: Re: Динамический перевод Отправлено: mutineer от Апрель 03, 2012, 20:57 Почему никто не обращает внимания на мой аватар((( Ну ты блондинка, поздравляю. Какое отношение цвет волос имеет к коду? Название: Re: Динамический перевод Отправлено: V1KT0P от Апрель 03, 2012, 20:59 может пришлю на мыло например или через аську а вы посмотрите??? Моя аська 426012470 Прям здесь проект минимальный прикрепи.Название: Re: Динамический перевод Отправлено: mutineer от Апрель 03, 2012, 21:00 может пришлю на мыло например или через аську а вы посмотрите??? Моя аська 426012470 Прям здесь проект минимальный прикрепи.Или хотя бы описание что и как не работает. А то "не работает" - может у тебя свет дома выключили, вот и не работает Название: Re: Динамический перевод Отправлено: kambala от Апрель 03, 2012, 21:02 чтоб не городить такие лесенки, лучше задать аббревиатуру языков через QAction::setData() где-нибудь в конструкторе, и потом просто делать
Код
Название: Re: Динамический перевод Отправлено: Bzzzuka от Апрель 03, 2012, 21:11 Вот проект, не работает перевод.
Название: Re: Динамический перевод Отправлено: Bzzzuka от Апрель 03, 2012, 21:13 а я вот люблю лесенки...
Название: Re: Динамический перевод Отправлено: mutineer от Апрель 03, 2012, 21:13 Вот проект, не работает перевод. сделай translator полем класса, а не локальной переменной Название: Re: Динамический перевод Отправлено: Bzzzuka от Апрель 03, 2012, 21:19 Сделала все равно не работает
Название: Re: Динамический перевод Отправлено: mutineer от Апрель 03, 2012, 21:22 Ну формальные ошибки я тебе помог поправить, а с переводами не работал. Жди другого помощника и кури мануалы по переводу
Название: Re: Динамический перевод Отправлено: Bepec от Апрель 03, 2012, 21:43 Я бы помог, но без выложенного конечного, исправленного, результата кода, я вам ничем не помогу ;)
Название: Re: Динамический перевод Отправлено: Bzzzuka от Апрель 03, 2012, 22:13 еще раз выложить???
Название: Re: Динамический перевод Отправлено: V1KT0P от Апрель 03, 2012, 22:14 Сделала все равно не работает Только что скачал и хотел править, но для начала решил удостовериться что правда не работает. Вранье, все работает отлично. Скорее всего ты не туда кладешь файлы с переводом. Если запускаешь из Qt Creator-а то файл должен лежать на одну директорию выше. Или просто скопируй нужные библиотеки в папку с исполняемым файлом и оттуда запусти его вручную.Название: Re: Динамический перевод Отправлено: Bzzzuka от Апрель 03, 2012, 22:29 Видимо я невезучая.. терь пишет
:: error: collect2: ld returned 1 exit status main.exe не запущен ошибка всего одна Название: Re: Динамический перевод Отправлено: V1KT0P от Апрель 03, 2012, 22:31 Видимо я невезучая.. терь пишет Скорее всего программа запущена или до сих пор висит в памяти, проверь через диспетчер задач.:: error: collect2: ld returned 1 exit status main.exe не запущен ошибка всего одна Также не помешает глянуть в консоль сборки, там может быть более подробное описание ошибки. Название: Re: Динамический перевод Отправлено: Bzzzuka от Апрель 03, 2012, 22:36 :D :D :D :D :D :D :D :D
Все работает!! Оказывается я забыла закоментить не используемый слот в заголовочном... Мальчики я вас всееееееееееех люблю!!! Спасибки болшушшие!! |