My Shiny Weblog!

programming, photography and lifestyle

Проблем за съответствие на имена

От няколко часа си блъскам главата върху следните проблеми. Трябва да визуализирам резултатите от SQL заявка в model/view на Qt 4.2. Искам, вместо вътрешните имена от базата данни на колоните, да ми излизат имена на български език. За целта ми трябва някакво съответствие между имената на български и тези от базата. Това съответсвие го имам във формите за вкарване на данни, които представляват отделни класове наследяващи QDialog, направени с помощта на Qt Designer. В тези форми името от базата данни на съответното поле се пази в objectName на съответния QLabel обект, а името на български се пази в текста не етикета. Проблемът е, че model/view обектите ми се намират в главния прозорец, а там нямам конструирани обектите от тип QDialog. Едно възможно решение е просто да конструирам диалозите без да ги показвам. Това обаче води до друг проблем — потребителя активира някакъв QAction. От него аз трябва да разбера обект от кой клас да конструирам, обаче името на класа ми се пази в objectName на QAction. Стигам до задачата да конструирам обекта от някакъв клас, като името на класа се пази в QString. В момента нямам идея как може да стане това…

Едно елементарно решение на тези проблеми би било да направя една SQL таблица, в която да пазя съответствието. Но това води до друг неприятен проблем — синхронизация на имената между таблицата и Qt Designer. Тъй като тези имена предстои да бъдат променяни, трябва да има начин промените на едното място да се отразяват автоматично на другото място. Стига се до проблема за яйцето и кокошката…

В момента ми трябва някакъв начин, какъвто и да е, за организиране на съответствието, но се оказва, че не мога да измисля нищо разумно.

UPDATE: Реших проблемите, като написах един XML парсер. Той парсва файловете произведени от Qt Designer и взема интересуващото ме съответствие. След това произвежда един header файл, в който се инициализира един QMap. Остана да изчистя още няколко дреби проблеми. Това упражнение ми отне почти цял ден.