Jest sobie taki kod dotyczączy zmiany fontów w widgetach (Akurat widgety dowolne, fontu i tak nie ma)...
#include <qapplication.h>
#include <qpushbutton.h>
#include <qfont.h>
#include <qpopupmenu.h>
#include <qmenubar.h>
#include <qstatusbar.h>
#include <qmainwindow.h>
class QLampy:public QMainWindow{
public:
QLampy();
private:
QFont* font;
QPopupMenu* ksiegowosc;
QPopupMenu* narzedzia;
QMenuBar* menu;
// ...
};
QLampy::QLampy(){
font=new QFont( "Tahoma",10,QFont::Bold);
// ...
ksiegowosc=new QPopupMenu();
ksiegowosc->setFont(*font);
ksiegowosc->insertItem("&Kupno");
ksiegowosc->insertItem("&Sprzedaż");
// ...
narzedzia=new QPopupMenu();
narzedzia->setFont(*font);
narzedzia->insertItem("&Katalog");
// ...
menu=new QMenuBar(this);
menu->setFont(*font);
// ...
menu->insertItem("&Księgowość",ksiegowosc);
menu->insertItem("&Narzędzia",narzedzia);
// ...
}
int main(int argc,char** argv){
QApplication a(argc,argv);
QLampy L;
a.setMainWidget(&L);
L.show();
a.exec();
return 0;
}
Czyli jak widać bardzo klasycznie. Problemem zaś jest brak polskich liter...
Kodowanie żródła/tekstów to iso8859-2, ale nawet zmieniając na utf8 (złe kody ? Ale chyba nie, kate raczej by sie aż tak nie źle nie zachowało) nie działa....
char* iso2utf(char* s){
unsigned char utf8[]
={196,133,196,135,196,153,197,130,197,132,195,179,197,155,197,186,197,188,
196,132,196,134,196,152,197,129,197,131,195,147,197,154,197,185,197,187};
static char b[256]; // tu jest ograniczenie funkcji
char* p=b;
while(*s){
char* t;
char* u="ąćęłńóśźżĄĆĘŁŃÓŚŹŻ";
if((t=strchr(u,*s))){
int i=((t-u)<<1);
//fprintf(stderr,"%d",i); // debug code
*p++=(char)utf8[i];
*p++=(char)utf8[++i];
}else{
*p++=*s;
}
s++;
}
*p=0;
return b;
}
// ...
menu->insertItem(iso2utf("&Księgowość"),ksiegowosc);
Co z tym fantem zrobić ? Czy może są to w ogóle zewnętrzne ustawienia qt ? Czy może jest to kwestia użycia char* zamiast klasy QString (jakas błedna automatyczna konwersja) ? Może zły konstruktor dla QFont (cos widzialem, ze podawało sie pełną nazwe fontu - w takim razie co tam wpisać) ? Może coś Makefile ?
// Gdyby ktos chciał to kompilowac, to wykonać w katalogu, w ktorym znajdzie sie plik cpp : qmake -project && qmake && make