Witam
Mam problem w takim fragmencie kodu :
void Widget::Display( QString english, QString polish ){
// load icon
QIcon icon = QIcon("icon4.ico");
// set up and show the system tray icon
QSystemTrayIcon *trayIcon = new QSystemTrayIcon(this);
trayIcon->setIcon(icon);
trayIcon->setVisible( true );
QTextCodec *codec = QTextCodec::codecForName("Windows-1250");
QTextCodec::setCodecForTr(codec);
trayIcon->showMessage(english,polish , QSystemTrayIcon::MessageIcon(1), 100);
trayIcon->show();
}
Idea tego jest taka, że podaje dwa stringi ( słowo po ang(English) i po polsku(Polish) ) i po wywołaniu tej funkcji(slotu) pokazuje się dymek ze słowem angielskim i jego tłumaczeniem. Niestety tłumaczenie w języku polskim które zawiera znaki diakrytyczne nie działa. Pojawiają sie krzaczki.
Próbowałem różnych sposobów, ale nic nie dało oczekiwanych rezultatów.
Najbliżej byłem przy wstawieniu dwóch linijek :
QTextCodec *codec = QTextCodec::codecForName("Windows-1250");
QTextCodec::setCodecForTr(codec);
Ale wtedy dobrze wyświetla tylko wtedy jak zamiast zmiennej [i][b]polish[/b][/i] wpiszemy tr("jakiś const char *"). Niestety w takim wypadku trzeba jakoś przekonwertować QString na const char *.
Użyłem do tego sposobu:
polish.toStdString().c_str()
..ale znowu fail.
Pomóżcie mi to jakoś rozwiązać, bo zaczyna mi brakować cierpliwości.. Albo jakoś zrobić to bez użycia tr(), albo z użyciem tr(), ale z prawidłową konwersją QStringa do const char*, tak, żeby działało..
Dzięki z góry!